ATI Radeon HD 2000シリーズはDirectX 10世代/SM4.0対応のGPUということで,「統合型シェーダアーキテクチャ」(Unified Shader Architecture)が採用されている。NVIDIAが「GeForce 8800」シリーズを発表したときにも統合型シェーダアーキテクチャの意義を解説したことがあるが,ここでももう一度振り返っておこう。 GPUは2000年のDirectX 8時代に,グラフィックステクノロジをソフトウェア実装するアプローチ「プログラマブルシェーダアーキテクチャ」を獲得し,これを主流として進化してきた。 このときからGPU内部には,頂点単位の処理をするプログラマブル頂点シェーダ(Programmable Vertex Shader,以下 頂点シェーダ),ピクセル単位の処理をするプログラマブルピクセルシェーダ(Programmable Pixel Shader,以下 ピクセルシェーダ),計2種類のプログラマブルシェーダユニットが設けられている。 3Dグラフィックスにおいて,一つのポリゴンが複数のピクセルから構成されて表示されることになるのはだいたい想像がつくはずだ。そうした理由から,ro rmt,(頂点シェーダユニットの数<ピクセルシェーダユニットの数)というバランスでGPUは構成されてきた。 だが,プログラマブルシェーダが高度化していくなかで,rmt,このバランスに変化が出てきた。 ここで少し,影生成技法について考えてみよう。「DOOM 3」などで活用されているステンシルシャドウボリューム技法では,光源から見て輪郭となる頂点を引き伸ばして影領域(=シャドウボリューム)を生成するので,頂点シェーダユニットに高負荷がかかる。 一方,「Tom Clancys Splinter Cell」シリーズで活用されているデプスシャドウ技法(シャドウマップ技法)では,光源から見た遮蔽構造を把握するため,「光源を仮想視点にしたシーン全体の深度値」を大きなサイズのテクスチャにレンダリングするので,ピクセルシェーダへの負荷が高くなる。 何がいいたいかというと,実際にプレイヤーの眼前に展開される1枚のシーンは,さまざまな負荷特性を持ったシェーダプログラムが複数実行されて作り上げられるので,局面局面に応じて頂点シェーダとピクセルシェーダにかかる負荷は随時変化するということだ。つまり,個数が固定的に実装された頂点シェーダユニットやピクセルシェーダユニットにシェーダプログラムを実行させると,どちらかのユニットがヒマでどちらかが忙しいという状況に必ずなる。それを示したのが図1だ。
関連トピック記事:
0 件のコメント:
コメントを投稿