ShaderTips

シェーダーTips

主にUnityシェーダーについての記事を書いています。

タイルベースレンダリングとは

タイルベースレンダリングとは?

スマートフォンタブレットで採用されているレンダリング手法で、GPU画面を複数のタイルに分割して、描画します。メモリの容量を節約し、描画速度を上げてくれます。

PowerVR - embedded graphics processors powering iconic products より引用

タイルベースレンダリング仕組み

タイルベースレンダリングでは、まずシーン内の全てのジオメトリの計算が終了したとき、各タイルごとに描画するポリゴンの情報(ポリゴンリスト)を作成します。


その後、ラスタライズで、各タイルごとにポリゴンリストから描画するポリゴンをレンダリングします。

https://hardzone.es/app/uploads-hardzone.es/2020/11/tile-rendering.jpg タイルレンダリング、非常に低消費のGPUのアーキテクチャ| ITIGIC引用

タイルベースレンダリングの利点

GPU専用では大きなメモリを積むことができません。その為、CPUとメモリを共有していますが、このメモリとGPUをつなぐバスが多くの場合、非常に細いという特徴があります。


※バスとはデータをやり取りするための信号線の束です。バス幅が細いということは1クロックでやりとりできるデータ量が少ないということです。


モバイルGPUは、細いバスで繋がったRAMから、頻繁にデータを読み書きしないで済むように、太いバスで繋がったSRAMを内蔵しています。ただし、SRAMの容量はとても小さいです。


一般的なレンダリング手法で描画で使用する画面サイズ分のカラーバッファ、深度バッファ、ステンシルバッファなどを必要するため、SRAMは使用できません。細いバスで繋がったRAMに置かれてしまいます。

https://img.logmi.jp/article_images/KpuZdQdTujdnZGjuc72JzY.png レンダリング結果を画面に表示してみよう Vulkanで画面に3Dグラフィックスを描く流れ - ログミーTech引用

タイルベースレンダリングでは、1つのタイルをレンダリングするのに必要なデータだけをSRAMに持っていき、計算を行います。これにより計算の途中で細いバスにデータを流さずにレンダリングすることができるので、高速ですし、メモリも節約することができます。

https://img.logmi.jp/article_images/5hFXSxiAnfK7vhfzc9Txt1.png レンダリング結果を画面に表示してみよう Vulkanで画面に3Dグラフィックスを描く流れ - ログミーTech引用

タイルベースはPowerVR、Adreno、Maliなどで採用されているそうです。

参考

www.4gamer.net

itigic.com

logmi.jp

monobook.org