「タイルベースレンダリング」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「'''タイルベースレンダリング'''(英語:tiled base rendering)とは、 コンピューター・グラフィックスにおいて、1つの画面を…」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (2人の利用者による、間の7版が非表示) | |||
| 1行目: | 1行目: | ||
'''タイルベースレンダリング'''([[英語]] | '''タイルベースレンダリング'''([[英語]]:tile based rendering)とは、 [[コンピューター・グラフィックス]]において、1つの画面を描画生成する際に、1画面を複数のタイルに分割してタイル単位で描画を行う手法です。古くは「チャンクレンダリング」「分割レンダリング」などとも呼ばれました。 | ||
==概要== | ==概要== | ||
タイル方式は大雑把にいえば「[[メモリ]] | タイル方式は大雑把にいえば「[[メモリ]]の容量と帯域を節約する手法」です。 | ||
# バーテックスシェーダーを実行する | |||
# 頂点をタイルに割り当てる | |||
# タイル単位でピクセルシェーダーを実行する | |||
一般的なレンダリングと比べて「頂点をタイルに割り当てる」という余計な処理が増えていますが、メモリ転送を複数のピクセルシェーダーの裏で細かく分散できるという利点があります。 | |||
「少ないメモリ」「遅いメモリ」という条件下では 従来方式では[[シェーダー]]が空回りしている時間が長くなりますが、 タイル方式であれば[[シェーダー]]を遊ばせることなくフル稼働させやすいという特性があります。 | |||
20世紀のメモリ容量が多くても数MBだった時代には夢のような技術あり、「[[ハードウェア]]を安く作れると夢のような手法」だと言われました。 | |||
==利点:メモリを節約できる== | ==利点:メモリを節約できる== | ||
一般的なレンダリング手法では描画作業用に画面解像度相当の[[カラーバッファ]]や[[深度バッファ]]や[[ステンシルバッファ]] | 一般的なレンダリング手法では描画作業用に画面解像度相当の[[カラーバッファ]]や[[深度バッファ]]や[[ステンシルバッファ]]などを必要とします。これらは20世紀の[[パソコン]]で主流だった[[VGA]]([[640x480]])でも1MB以上が必要です。 | ||
さらにこれを60fpsで描画しようとするとメモリ帯域が問題になります。 | |||
一方、タイルベースレンダリングでは作業用に必要なメモリ容量が「タイルの大きさ」で済みます。16x16や32x32という超低解像度を格納する程度のメモリなら高価で高速な[[SRAM]]も採用できます。 | |||
[[ファイル:Tiled base rendering 1.png|none]] | |||
なお、メモリ容量については昨今のバカみたいにメモリを搭載した[[パソコン]]や[[スマホ]]では[[フルHD]]([[1920x1080]])でも数十MB程度なのであまり問題にならなくなりました。 | |||
[[ | |||
一方、メモリ帯域に関しては今でも厳し状況が続いています。[[パソコン]]向けの[[ビデオカード]]では「やれ[[GDDR]]だ」「やれ[[HBM]]だ」と力技で解決が試みられていますが、スマホはバカみたいに遅い[[LPDDR]]がいまだに主流なので問題になることが多くあります。 | |||
==利点:タイルを再利用できる== | |||
シーンの「動きが小さい」と判断した場合、クソ真面目に描画せずに、前フレームで生成したタイルに[[アフィン変換]]をかけたものを出力することで手抜きができます。あくまで近似画像であり当然ながら画質は微妙になりますが描画負荷は大幅に下がります。シーンの動きが大きい場合は残念なことになります。地味に20世紀の低性能な[[GPU]]では重要な要素だったようです。 | |||
==欠点:オーバードローが発生する== | ==欠点:オーバードローが発生する== | ||
「タイルをまたぐ[[ポリゴン]]」を描画する場合はそのタイル数だけ[[シェーダー]] | 「タイルをまたぐ[[ポリゴン]]」を描画する場合はそのタイル数だけ[[シェーダー]]が動くことになります。いわゆる[[オーバードロー]]です。 | ||
以下の例では1[[ポリゴン]]を描画するのに灰色の4タイルそれぞれで[[シェーダー]]が動いてしまいます。 | |||
[[ファイル:Tiled base rendering 2.png|none]] | |||
==欠点:タイル割当が重い== | |||
タイルベースレンダリングでは以下のような工程になる。 | |||
# バーテックスシェーダー実行 | |||
# ポリゴンをタイルに割り当てる | |||
# タイル単位でピクセルシェーダー実行 | |||
この処理はシーン内のポリゴン数が増えれば増えるほど重くなる。[[PowerVR]]が登場したころの[[ローポリゴン]]が主流の時代には問題にならなかったが、ポリゴン数が激増すると、この処理は無視できないほど高負荷になった。 | |||
== 採用事例 == | |||
タイルベースレンダリングは、[[マイクロソフト]]が絶賛し「[[Talisman]]」をぶち上げ、[[NEC]]が「[[PowerVR]]」を製造してしまい、[[セガ]]が[[ドリームキャスト]]に採用された。 一方、[[プレイステーション2]]は「[[力こそパワー]]」であると2560ビットの超高速バスを採用した。 | |||
21世紀になるとタイルベースレンダリングは「忘れ去られた技術」になっていたが、[[iPhone]]が採用し復活を果たした。 これは[[スティーブ・ジョブズ]]の厳しい筐体サイズや消費電力への要求に応えるためだと思われる。 | |||
== 関連項目 == | |||
* [[フォワードレンダリング]] | |||
* [[遅延レンダリング]] | |||
[[category: コンピューター・グラフィックス]] | |||
2025年10月14日 (火) 03:02時点における最新版
タイルベースレンダリング(英語:tile based rendering)とは、 コンピューター・グラフィックスにおいて、1つの画面を描画生成する際に、1画面を複数のタイルに分割してタイル単位で描画を行う手法です。古くは「チャンクレンダリング」「分割レンダリング」などとも呼ばれました。
概要[編集 | ソースを編集]
タイル方式は大雑把にいえば「メモリの容量と帯域を節約する手法」です。
- バーテックスシェーダーを実行する
- 頂点をタイルに割り当てる
- タイル単位でピクセルシェーダーを実行する
一般的なレンダリングと比べて「頂点をタイルに割り当てる」という余計な処理が増えていますが、メモリ転送を複数のピクセルシェーダーの裏で細かく分散できるという利点があります。
「少ないメモリ」「遅いメモリ」という条件下では 従来方式ではシェーダーが空回りしている時間が長くなりますが、 タイル方式であればシェーダーを遊ばせることなくフル稼働させやすいという特性があります。
20世紀のメモリ容量が多くても数MBだった時代には夢のような技術あり、「ハードウェアを安く作れると夢のような手法」だと言われました。
利点:メモリを節約できる[編集 | ソースを編集]
一般的なレンダリング手法では描画作業用に画面解像度相当のカラーバッファや深度バッファやステンシルバッファなどを必要とします。これらは20世紀のパソコンで主流だったVGA(640x480)でも1MB以上が必要です。
さらにこれを60fpsで描画しようとするとメモリ帯域が問題になります。
一方、タイルベースレンダリングでは作業用に必要なメモリ容量が「タイルの大きさ」で済みます。16x16や32x32という超低解像度を格納する程度のメモリなら高価で高速なSRAMも採用できます。

なお、メモリ容量については昨今のバカみたいにメモリを搭載したパソコンやスマホではフルHD(1920x1080)でも数十MB程度なのであまり問題にならなくなりました。
一方、メモリ帯域に関しては今でも厳し状況が続いています。パソコン向けのビデオカードでは「やれGDDRだ」「やれHBMだ」と力技で解決が試みられていますが、スマホはバカみたいに遅いLPDDRがいまだに主流なので問題になることが多くあります。
利点:タイルを再利用できる[編集 | ソースを編集]
シーンの「動きが小さい」と判断した場合、クソ真面目に描画せずに、前フレームで生成したタイルにアフィン変換をかけたものを出力することで手抜きができます。あくまで近似画像であり当然ながら画質は微妙になりますが描画負荷は大幅に下がります。シーンの動きが大きい場合は残念なことになります。地味に20世紀の低性能なGPUでは重要な要素だったようです。
欠点:オーバードローが発生する[編集 | ソースを編集]
「タイルをまたぐポリゴン」を描画する場合はそのタイル数だけシェーダーが動くことになります。いわゆるオーバードローです。
以下の例では1ポリゴンを描画するのに灰色の4タイルそれぞれでシェーダーが動いてしまいます。

欠点:タイル割当が重い[編集 | ソースを編集]
タイルベースレンダリングでは以下のような工程になる。
- バーテックスシェーダー実行
- ポリゴンをタイルに割り当てる
- タイル単位でピクセルシェーダー実行
この処理はシーン内のポリゴン数が増えれば増えるほど重くなる。PowerVRが登場したころのローポリゴンが主流の時代には問題にならなかったが、ポリゴン数が激増すると、この処理は無視できないほど高負荷になった。
採用事例[編集 | ソースを編集]
タイルベースレンダリングは、マイクロソフトが絶賛し「Talisman」をぶち上げ、NECが「PowerVR」を製造してしまい、セガがドリームキャストに採用された。 一方、プレイステーション2は「力こそパワー」であると2560ビットの超高速バスを採用した。
21世紀になるとタイルベースレンダリングは「忘れ去られた技術」になっていたが、iPhoneが採用し復活を果たした。 これはスティーブ・ジョブズの厳しい筐体サイズや消費電力への要求に応えるためだと思われる。