後藤弘茂のWeekly海外ニュース

Radeon HD 5800でスタートを切ったDirectX 11ハードウェア



●6度目の試みとなるAMD/ATIのテッセレータ

 今回、DirectX 11サポートGPUの開発レースでは、AMDが一歩先んじた。Radeon HD 5800(Cypress)系が、初めてのDirectX 11ハードウェアとなる。AMDは、MicrosoftのWindows 7発売とほぼ同期してDirectX 11 GPUを提供することになる。

 DirectX 11では細部でプログラム性が高まっているため、GPUアーキテクチャにはさまざまな変更が必要となる。しかし、GPUの基本的な構造上の大きな変化を要するAPI側の変更はあまりない。DirectX 10世代のユニファイドシェーダ型のプロセッサ構造を持つGPUなら、比較的小規模な変更だけで対応が可能だ。

 AMD以外のGPUメーカーにとっては、最大の変化は平面分割を行なう「テッセレータ(Tessellator)」ユニットの搭載となる。しかし、AMDだけは旧ATI時代から、何らかの形でテッセレータを搭載していた場合が多かったため、これも付加的な改良で対応ができる。つまり、AMDにとってDirectX 11のハードウェアサポートは、比較的軽かったことになる。

 AMDのグラフィックス部門の技術トップであるEric Demmers氏(CTO and AMD Fellow, Graphics Products Group, AMD)は次のように説明する。

 「我々はCypressでテッセレーションを強化した。テッセレーションについては、(旧世代の製品である)R200(Radeon 8500)ですら持っていた、R300(RADEON 9700)では落とした(実装されていると発表されていたが、実はソフトウェア処理だった)が、それ以降はXbox 360 GPUも含めて備えている。それら全てに対して、(Cypressは)後方互換性を維持しており、さらに、DirectX 11のフィーチャも加えた」。

テッセレータを搭載したRadeon HD 5800シリーズ

 こうした歴史があるため、AMDはCypressのテッセレータを第6世代と呼ぶ。Xbox 360 GPU(Xenos)を含めて、過去に5回実装を重ねてきたからだ。しかし、これまではほとんど使われて来なかった。つまり、AMD/ATIからすると、今回のテッセレータが、6度目のチャレンジとなる。

●テッセレータの活用にはソフトウェア開発側の改革が必要

 テッセレータがあると、ポリゴンをGPU内でハードウェアで動的に分割してくれる。そのため、ポリゴンベースのGPUでは本来扱えなかった曲面(高次サーフィス)も扱うことができる。コントロールポイントと関数で表現された曲面の少ないデータ量で、複雑なオブジェクトを表現できる。アダプティブLOD(Level of Detail)として、視点からの遠近に応じてオブジェクトの複雑度を段階的に変化させることで、頂点データ数を減らすことができる。一種のジオメトリ圧縮として使うことができる。

 ここで最大の疑問は、これまで使われて来なかった曲面表現が、DirectXによるテッセレーションのサポートで、本当に使われるようになるかどうかだ。使われなければ、これまで同様に、単なる飾りに終わってしまう。

 これについては、9月頭に横浜で行われたゲーム開発カンファレンス「CEDEC」での「IMAGIRE DAY: 3Dゲーム開発マニアックス」と題されたラウンドテーブルで、3Dグラフィックスのトップ開発者達が興味深い意見を述べている。ラウンドテーブルの司会は、ライターの西川善司氏が務めた。

CEDECのラウンドテーブルの様子

 「スターオーシャン」や「ヴァルキリープロファイル」シリーズを開発するトライエースの代表取締役であり現役開発者でもある五反田義治氏は次のように語っている。

 「昔も、ATI時代に、独自のNPatchなど実装していたが、誰も使わなかった。Xbox 360やPSPでも(曲面サポートが)があるのだけど、そのわりには使われていない。では、本当にDirectX 11で使われるのか。そこを疑問に、思っている人(開発者)は多いと思う。

 なぜ使われないのか。実は、曲面はプログラマーからすると、すごくありがたい。多分デザイナーもそのはず。今、GPUで一番問題になっているのはラスタライズで、ポリゴンを細かくして行くと(ラスタライズが追いつかないため)パフォーマンスが落ちてしまう。そのため、LODをやらなければならない。しかし、現在は、手作業で(各LODレベルの)モデルをいっぱい作ったりして、(デザイナーが)苦労している。そういう状況で、自動LODができる、アダプティブなパラメトリックサーフィスの実装などは、非常にありがたい。

 ところが、どうしてか、今までは使われて来なかった。結局のところ、それは、ハードウェアの問題や曲面がどうのというより、制作パイプラインの問題。そういう意味で、今回(DirectX 11では)は曲面アルゴリズムの部分に関しては、自分で実装できる。自分の会社で慣れているアルゴリズム、例えば、サブディビジンサーフィスを実装するのか、NURBSを実装するのか、それを選択する権利があるため、対応しやすい。個人的には、曲面は、単純に流行のプロシージャル(ゲーム開発用語でのデータの自動生成)という意味でも、対応して行かないといけないと考えている」。

 こうしてみると、制作側がいったん高次サーフィスに適応して制作パイプラインを組み直せば、対応が進む可能性がある。そして、それはGPUのボトルネックを回避して、結果的にGPU性能を引き出すことを可能にする。ただし、そのためには、意識改革を含めた積極的な対応が必要になりそうだ。

●移行のハードルが低いDirectX 11

 では、テッセレータは別として、DirectX 11自体への移行は穏当に進むのだろうか。これについては、CEDECの「IMAGIRE DAY: 3Dゲーム開発マニアックス」の中で、カプコンの石田智史氏(プロダクト制作部技術研究室)が次のように語っている。石田氏は、カプコン社内の共通エンジン「MT-Framework」(デビルメイクライ4、バイオハザード5などが採用)の開発者としてゲーム業界では知られている。

 「MT-Frameworkの場合は、すでにDirectX 10ベースに切り替えている。DirectX 11版もビルドは通している。DirectX 10からDirectX 11への移行は本当に簡単で、1日もあればできてしまう。それに対して、DirectX 9ベースのエンジンから、DirectX 10ベースに移行するのは、『ロストプラネット』の場合では1カ月かかった」

 DirectX 9からDirectX 10へは、過去を切り捨てる大きなジャンプだった。それに対して、DirectX 11はDirectX 10の上に積み上げられているため、移行のハードルは高くはない。デベロッパーにとってみると、簡単に行ける道であり、それなりに対応は進むだろう。しかも、DirectX 11では、DirectX 10やDirectX 9世代のハードウェアに対しても互換のライブラリを持っている。そのため、ソフトウェア開発側にとっては、DirectX 11への移行の利点がある。

●複雑化する論理上のグラフィックスパイプライン

 しかし、DirectX 11の方向性自体には、疑問符をつける開発者が少なくないことも確かだ。DirectX 11では、論理パイプラインがより深く複雑になった。テッセレータだけでなく、その前に「ハルシェーダ(Hull Shader)」、後ろに「ドメインシェーダ(Domain Shader)」と2つの新しいシェーダステージが加わった。また、汎用コンピューティングのDirectComputeのための「コンピュートシェーダ(Compute Shader)」も付加されている。

 実際には、Cypressの例のように、プログラマブルなシェーダステージは、単一種のプロセッサコア群に割り当てられてしまう。物理的に、GPUが複雑なステージを実装するようになるわけではない。しかし、プログラマからは複雑性が増えたパイプラインとなる。

DirectX 10 APIとGPU実装
DirectX 11 APIとGPU実装

 CEDECのラウンドテーブルで、ミドルウェア開発を行なうシリコンスタジオの田村尚希氏(ソフトウェアエンジニア ソフトウェアエンジニアリング部 シリコンスタジオ)は次のように語っている。

 「DirectX 11については、ごちゃごちゃして来たというのが直観的な感想。さまざまなシェーダが設定されているためだ。

 そもそも、シェーダが出てくる前はマルチテクスチャリングなどAPIがどんどん増えて、限界が見えてきた。そこで、いったん汎用のシェーダという仕組みで置き換えて、よりスマートに一元化して行こうとなった。ところが、APIをスマートにして、開発側が幸せになるはずだったシェーダが、再び煩雑化して、最初のイメージと変わってきた。

 このまま、シェーダが増えて行くと、DirectX 7でAPIが増えて限界が来たのと同様に、ある程度行くと限界が来るかも知れない。その時に、今のパイプラインの仕組みが、一度リセットされ、アーキテクチャの見直しがあるのかなと考えている。その時点に、ソフトウェアレンダラへの回帰などが起きるかも知れない」。

●グラフィックスAPIのいらない時代?

 田村氏の意見を、意訳すると次のようになる。APIが複雑化すると開発側としてはやっていられない。もともと、シェーダGPUの理念は、GPUをプログラマブルでフラットでシンプルなハードウェアにして、その上のプログラムで機能を実装しようというものだった。それなのに、そのGPUにアクセスするAPIセットが再び複雑化しつつある。

 しかし、ハードウェア自体は、プログラマブルで柔軟でフラットな構造になりつつある。だったら、複雑なパイプラインは取り去ってしまって、その上でレンダリングするソフトウェアを自由に書けるようにするという時代が来るかもしれない。その方が、結果としてハードウェアが使いやすくなるかもしれない。

 こうした意見を持つ開発者は多い。米国のトップ開発者の一人Tim Sweeney氏(CEO, Founder, Epic Games)は、2008年のCEDECで「グラフィックスAPIを介さない新しい時代が来る」と語っていた。また、IntelのLarrabee(ララビー)の理念もそこにある。CUDAやOpenCLの上で、レンダラを書くというビジョンを語る開発者もいる。

 とはいえ、それには時間もかかるし、ハードウェア自体の進化も必要となる。急展開するとは見られていない。しばらくはDirectXの時代が続くだろう。

グラフィックスのパイプラインの歴史