「Deferred Vertex Shading」の版間の差分
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) |
||
(同じ利用者による、間の1版が非表示) | |||
5行目: | 5行目: | ||
== 概要 == | == 概要 == | ||
[[パソコン]]の[[ビデオカード]]に搭載される[[GPU]]は[[HBM]]などの高速な[[VRAM]]を利用していますが、[[スマートフォン]]の[[GPU]]は[[LPDDR3]]などの遅い[[メインメモリ]] | [[パソコン]]の[[ビデオカード]]に搭載される[[GPU]]は[[HBM]]などの高速な[[VRAM]]を利用していますが、[[スマートフォン]]の[[GPU]]は[[LPDDR3]]などの遅い[[メインメモリ]]の一部を共用利用しているのが一般的です。これが原因で「[[GPU]]を高性能化できない」「GPUを高性能にしてもデータ転送が遅すぎて空回りする」という問題に直面していたそうです。 | ||
DVSは[[PowerVR]]で有名な[[タイルベースレンダリング]]の発展形で、1つの[[ポリゴン]](三角形)が複数のタイルにまたがる場合は従来通りですが、1つの[[ポリゴン]](三角形)が1つの[[タイル]]に完全に収まる場合は[[バーテックスシェーダー]]の実行を[[フラグメントシェーダー]]の直前まで遅延させるという方式です。 | DVSは[[PowerVR]]で有名な[[タイルベースレンダリング]]の発展形で、1つの[[ポリゴン]](三角形)が複数のタイルにまたがる場合は従来通りですが、1つの[[ポリゴン]](三角形)が1つの[[タイル]]に完全に収まる場合は[[バーテックスシェーダー]]の実行を[[フラグメントシェーダー]]の直前まで遅延させるという方式です。 | ||
1つの[[ポリゴン]] | 1つの[[ポリゴン]](三角形)が複数のタイルにまたがる場合は従来通りすべてのポリゴンに対して[[バーテックスシェーダー]]を実行して、そのすべての処理が終わった後に[[ピクセルシェーダー]]を実行します。 | ||
一方、1つの[[ポリゴン]](三角形)が1つのタイルに完全に収まる場合は[[バーテックスシェーダー]]と[[フラグメントシェーダー]]を断続的に実行し、その際のシェーダー間のデータの受け渡しに「遅い[[VRAM]](≒[[スマートフォン]]の[[メインメモリ]])」ではなく「GPUに内蔵された小容量の超高速メモリ」を利用することでGPUの空回りを防ごうという仕組みだそうです。 | |||
== 採用例 == | == 採用例 == |
2024年8月26日 (月) 02:51時点における最新版
Deferred Vertex Shading(通称:DVS、遅延頂点シェーディング)とは、クアルコムが考案したメモリの遅いスマートフォンでGPUを高速化する技術です。
紛らわしい名称[編集 | ソースを編集]
この「遅延頂点シェーディング」と「遅延シェーディング」は名称が似ていますがまったくの別物です。遅延頂点シェーディングあくまでGPU内部の構造のことであり、GPUを利用するプログラマーが意識する必要があるものではありません。
概要[編集 | ソースを編集]
パソコンのビデオカードに搭載されるGPUはHBMなどの高速なVRAMを利用していますが、スマートフォンのGPUはLPDDR3などの遅いメインメモリの一部を共用利用しているのが一般的です。これが原因で「GPUを高性能化できない」「GPUを高性能にしてもデータ転送が遅すぎて空回りする」という問題に直面していたそうです。
DVSはPowerVRで有名なタイルベースレンダリングの発展形で、1つのポリゴン(三角形)が複数のタイルにまたがる場合は従来通りですが、1つのポリゴン(三角形)が1つのタイルに完全に収まる場合はバーテックスシェーダーの実行をフラグメントシェーダーの直前まで遅延させるという方式です。
1つのポリゴン(三角形)が複数のタイルにまたがる場合は従来通りすべてのポリゴンに対してバーテックスシェーダーを実行して、そのすべての処理が終わった後にピクセルシェーダーを実行します。
一方、1つのポリゴン(三角形)が1つのタイルに完全に収まる場合はバーテックスシェーダーとフラグメントシェーダーを断続的に実行し、その際のシェーダー間のデータの受け渡しに「遅いVRAM(≒スマートフォンのメインメモリ)」ではなく「GPUに内蔵された小容量の超高速メモリ」を利用することでGPUの空回りを防ごうという仕組みだそうです。