【レポート】
新年を迎えるにあたり、今一度、ここ最近のPC 3Dグラフィックスの技術トレンドを総ざらいしてみたいと思う。
ここ数年、PC 3Dグラフィックスの進化はWindowsのマルチメディアコンポーネント「DirectX」の3Dグラフィックスを司る「Direct3D」と共にあった。よって、PC向けGPUを語る際にはDirectXの世代で区別する場合が多い。本稿もこの慣わしにならうとする。
○GPUはなぜプログラマブルシェーダ・アーキテクチャへ進化したのか
D3D 7(DirectX 7のDirect3D 以下同)世代のGPUまでは、毎年、全世界の研究者達の手によって生み出される革新的な最新3Dグラフィックス技術を、次期GPUにてハードウェアで実装するという進化が繰り返されてきた。その度、Direct3Dはその機能を活用するためのAPIを新設していた。
この進化サイクルでは以下のような問題点を生む。
(1)発表される最新3Dグラフィックス技術のインプリメント(実装)は次期設計GPUになる → GPUの開発には1~2年ほどの時間がかかるので、その新技術が利用できるようになるまでに時間がかかる
(2)実装された新機能が実際のアプリケーションで利用されるとは限らない → 機能のインプリメントにはトランジスタを喰う。使われない機能を実装することはコストと消費電力の上昇を招き、何の得にもならない。→ 化石のような機能がDirect3D内に増殖していく
これらを打開するために考案されたのが、「新しい3Dグラフィックス技術をソフトウェアで走らせよう」という発想だ。これまで特定の機能しか実現できなかったGPUに、「ソフトウェア実行能力」を持たせるという意味であり、これが「陰影処理をプログラム可能な仕組み」、すなわちプログラマブルシェーダというアイディアだ。
これにより、最新技術をすぐにGPUで実現させることができ、逆にこの仕組みを使って新たな陰影処理の仕組みを実験、開発していくことも可能になる。(1)の問題点は解決されるのだ。
そして、使われるかどうか分からない機能をGPUにインプリメント、新設していく必要がなくなり、Direct3Dに化石的な機能が増えていく心配もなくなる。ただし、GPUに汎用ソフトウェアの実行能力を持たせるということは相当数のロジック(トランジスタ)を必要とするため、プログラマブルシェーダの汎用性を高めていくのに比例して、やはりトランジスタ数は増加の一途をたどることになる。この部分については完全な解決を見ることはできないわけだ。
プログラマブルシェーダ・アーキテクチャがサポートされたのは2000年に発表されたDirectX 8で、このアーキテクチャを実際に搭載したGPUが登場したのは2001年。第一弾はNVIDIA GeForce3であった。以降、GPUはプログラマブルシェーダの機能を拡張する方向に進化していくこととなる。
![]() |
![]() |
| 「TOM CLANCY'S SPLINTER CELL」(Ubi Soft)より。プログラマブルシェーダはPC-3Dゲームグラフィックスの表現力を向上させた。この画面では夕日に照らされる海面のさざ波をプログラマブルピクセルシェーダによる動的な環境バンプマッピングで表現している。 | |
○より高度なプログラマブルシェーダ・アーキテクチャを目指して
DirectX 9ではプログラマブルシェーダ2.0をインプリメントし、プログラマブルシェーダ・アーキテクチャは2世代目となった。
プログラマブルシェーダ2.0ではプログラム長の制限が緩和、新たな命令群も追加され、より長く複雑なシェーダプログラムが実行可能となった。
特に、プログラマブルピクセルシェーダに浮動小数点実数(FP)演算の機能が盛り込まれたことと、そしてレンダリングターゲットやテクスチャにFPフォーマットが指定できるようになった点がリアルタイム3Dグラフィックスにとっては大きな革新だった。
例えば環境バンプマッピングという、ポリゴン面上に細かい凹凸があるかのように見せつつ、周囲の映り込みも再現する表現手法。これは、あらかじめ凹凸を法線ベクトルで表現、これをテクスチャデータ化して用意しておき(『法線マップ』という)、テクスチャマッピング処理プロセス時に、このテクスチャから法線ベクトルをテクセルとして取り出して、これを視線ベクトルと光源ベクトルに配慮して陰影処理するようなシェーダプログラムを走らせることで実現する。
この法線マップをFP表現できれば、より高精度な環境マップ参照が行えることになり、視線ベクトルや光源ベクトルを絡めた陰影処理をFP次元で演算できれば、より誤差の少ないレンダリング結果を得ることができる。そして、レンダリングをFP次元で行えるということは、RGB各8ビット整数、1677万色の表現幅に縛られない、表現幅の広いレンダリングが行えることになる。ディスプレイで表現できる明るさの数千倍以上もある現実世界を模したシーンのレンダリングも可能になるわけだ。ちなみに、これを特にハイダイナミックレンジ(HDR)レンダリングと呼んでいる。
HDRレンダリングした結果は、そのままでは表示できないので、1677万色に丸めて表示することになるわけだが、丁度この処理系は、カメラで現実世界を覗いたときにちゃんとフィルムで感光できる光量になるように露出を変えるプロセスと同じになる。あるいは人間が瞳の大きさを変えて網膜に当たる光量を調整するプロセスに相当する。
FPシェーダーの実装により、リアルタイム3Dグラフィックスは「現実世界同様の情景を作り出してこれを見る」というアプローチを取ることが可能になったのである。
![]() |
![]() |
| Masaki Kawase氏によるHDRレンダリングのデモ。3Dゲームでも最近はHDR表現を擬似的に再現するタイトルが増えている。 | |
○DirectX 9世代GPUが抱えたジレンマ
DirectX 7世代のGPUまでは、結局のところ「フィルレート向上」と「マルチテクスチャリング効率化」の歴史だった。そして、GPUのパフォーマンスの向上というのは、事実上、「GPUコアの高クロック化」「ビデオメモリ帯域の向上」「ピクセルレンダリングパイプライン本数の増加」に集約されてきたのだ。
プログラマブルシェーダという全く新しい発想が主流となってきたDirectX 8世代以降のGPUにおいても、この進化のベクトルは変わらない。しかし、2002年のDirectX 9世代GPUを設計する際、それが理想通りに実現できるかどうかは怪しくなってしまっているのだ。
「GPUの高クロック化」…これは製造プロセスルールのシュリンクでなんとかなる。「ビデオメモリ帯域の向上」…これも高クロックなDDR SDRAMや、より実効パフォーマンスに優れるDDR II SDRAMの台頭によりなんとかなる。問題は「ピクセルレンダリングパイプライン本数の増加」だ。
DirectX 6世代GPUからDirectX 8世代GPUにかけて、ピクセルレンダリングパイプライン本数は1→2→4と倍々ゲーム式に増加してきた。このテンポを守ろうとすればDirectX 9世代GPUでは8本とならなければならない。
ところが、DirectX 9ではプログラマブルピクセルシェーダに対しFP演算能力を持たせなければならない。D3D 9で規定される最大長のFP表現は32ビットFP(IEEE754準拠)であり、3DグラフィックスにおけるFPは4データ(αRGBやw、x、y、z等)SIMD演算になるので、32ビット×4データの128ビットFP演算器が各ピクセルレンダリングパイプラインに必要になってくるのだ。これはかなり大規模なロジックであり、8本のパイプライン全てに128ビットFP-SIMD汎用演算器を実装させようとすると、膨大なトランジスタ数が必要になってくる。130nmや150nmという製造プロセスルールでは、これを現実的なコストで作るのはかなり厳しい。
つまり、DirectX 9世代GPUの設計においては、ピクセルレンダリングパイプラインの本数を8本にすることと、D3D 9を仕様通りに実装することの両立が難しくなってしまったのだ。
| レノボ・ジャパン、ウェブ広告モデルを一般公募 - 新生活キャンペーンの一環で [21:21 2/10] |
| 【レポート】スマートフォンを狙ったワンクリック詐欺やオンラインバンキングを狙うゼットボット - トレンドマイクロマンスリーレポート [20:43 2/10] |
| 【レポート】レノボ、大和研究所の開発陣らによる「ThinkPad X1 Hybrid」の技術解説 [20:41 2/10] |
| デル、「冬モデルファイナルセール」最終週 - 各種アップグレードが無料 [20:13 2/10] |
| Appleが3月初旬にスペシャルイベント開催の噂 - iPad 3の発表か [18:34 2/10] |
|
渡部篤郎主演でドラマ化!地元新聞社が伝え続けた東日本大震災の物語 [00:08 2/11] キャリア |
|
沖縄発ヒーロー革命!「琉神マブヤー」が海を越えハワイを目指す! [00:08 2/11] キャリア |
|
中国四川省、パンダの保護と生態研究の最新情報とは? [00:08 2/11] キャリア |
|
日本の影響でオタク文化が発達!? 設楽統と杉崎美香がシンガポールのエンタメを探る! [00:07 2/11] キャリア |
|
西武と巨人、心配なキャンプの始まりや 【エモやんのワイルドピッチ】 [00:06 2/11] キャリア |