|
会場:サンフランシスコ Moscone Convention Center
この中の、将来のDirectXの方向性が語られた「DirecX Futures」と、前日の「Advanced Visual Effects with Direct3D」の中で行なわれた「Direct3D Techniques and Futures」のセッションは非常に関連が深く、そして興味深い内容だったので1つにまとめてレポートする。
なお、この2つのセッションではともに、Microsoft Windows Display & Graphicsで、DirectXのアーキテクトを務めるChas. Boyd氏が登壇した。
■ 近未来の次世代DirectXはこうなる! 「DirectX」はWindows環境下のマルチメディアコンポーネントのプログラミングインターフェイスだが、その中でも3Dグラフィックスを統括する「Direct3D」は、実質的にWindows環境における最新3Dグラフィックス技術の進化を支える存在として進化してきた経緯がある。Direct3DはDirectXの中でも、もっとも進化の著しいものであるため、いまやPC業界では「Direct3D=DirectX」という認識となっている。最新WindowsのWindows Vistaでは、GUIやデスクトップ描画をDirect3D 9 Exが担当するなど、OSコア部分に組み入れられており、DirectX (Direct3D) の進化の方向性は、Windows環境、もっといえばPC環境の進化の方向性を決定づけるものと言っても過言ではないわけだ。 DirectXアーキテクトであるBoyd氏は、このDirectXの進化の方向性を決める人物であり、毎年彼が行なう「DirectX Futures」にまつわる講演は注目度が高い。 今回、Boyd氏の講演では、未来のDirectXについて、「近未来のDirectX」と「遠い未来のDirectX」と2つに分けて語られた。
「Medium Range Future」……これはBoyd氏の口からは明確な表現はなされなかったが、おそらくは「DirectX 11」のような、比較的、リアリティの高い、近未来の話に相当するものだと思われる。受け手としては、次期DirectXへの実装の検討がなされているテーマの紹介……として理解すればとっつきやすいはずだ。 ・Support for Multi-Core CPUs まず、ユーザーや開発者からの要望で多く寄せられるのが「マルチコアCPUへの積極対応を行なって欲しい」というもの。現在、ミドルレンジクラスのPCでは、デュアル(2x)コアが当たり前で、ハイエンドになるとクワッド(4x)コアやオクタ(8x)コアのCPUを搭載したPCまでが一般ユーザーのもとに普及しつつあり、DirectX内の各種APIタスクのマルチコア最適化が望まれているのだ。 ・Higher Order Surfaces もう1つはハイ・オーダー・サーフェイス (高次曲面) への対応。3Dモデルデザインツールなどにおけるキャラクタ作成工程では、なだらかな曲面表現のために用いられるこのテクニックを、リアルタイムレンダリングのフェイズにも苦労なくシームレスに持って行く手法が望まれているというのだ。 実際に、リアルタイムレンダリング時に高次曲面生成を行なうのは、動的な3Dモデルの変形や物理シミュレーション、衝突判定などを行なうゲームアプリでの実装も現実的ではないため、ソリッドなポリゴンモデルへのサブディビジョン (ポリゴン分割) の実装が不可欠になるとされる。サブディビジョンといえば、ATI (AMD) が積極的に取り組んできたテーマで、古くはRadeon 8000/9000シリーズのTRUFORM機能、最近ではXbox 360のGPUやRadeon HD 2000/3000シリーズのDedicated Tessellatorユニットが提供されているが、それほど積極的な活用はなされていない。
しかし、ここ数年、Boyd氏のセッションでは必ずと言っていいほど、サブディビジョンやテッセレーションの話題が上り、実際に何度か次世代Direct3Dの仮想パイプライン図でテッセレータユニットのブロックが示されているので、Microsoftとしても真剣に検討していると言うことなのだろう。
・Better Texture Compression 3Dグラフィックスパイプラインの主流がハイダイナミックレンジ (HDR) レンダリングに移行を完了したといえる現在において、唯一環境整備(?)がなされていないのがHDRテクスチャの圧縮メソッド。S3が開発してMicrosoftが標準化したテクスチャ圧縮メソッド「DXTC」は実用化されてから約10年が経つが、浮動小数点テクセルからなるHDRテクスチャや、法線マップのような色情報ではないベクトル情報を格納したベクトルテクスチャの圧縮にはDXTCが不向きなことが指摘されているのに動きがない。AMD (ATI) の3Dc/3Dc+のような中継ぎ的なテクノロジーも提唱されたが、根本的解決には至っていないのだ。だからこそ「そろそろテコ入れをして欲しい」という要望が多く来ているというわけだ。 ちなみに、OpenGL方面ではDXTCよりも高品位なテクスチャ圧縮が可能とされる新メソッド「ETC: Ericsson Texture Compression」が正式採用されるなど動きが見られている。 ・Shader Language Evolution 3Dグラフィックス処理をソフトウェア実装するというプログラマブルシェーダが一般化し、そのプログラマビリティはプログラマブルシェーダ仕様 (Shader Model:SM) の進化とともに向上してきた。実際、現状、SM4.xであれば、かなり複雑なアルゴリズムのシェーダプログラムを具現化することが可能になっている。これからも命令セットの拡張はSMバージョンの革新とともに進化がなされるだろうが、Boyd氏によれば、Microsoftに寄せられているのは、シェーダ命令セット拡充の要望ではなく、別の角度の不満が寄せられているのだそうだ。 それはシェーダプログラムモジュールを自在に組み合わせられる柔軟度の実装の仕組みだという。 たとえば、あるマテリアルを再現するのに鏡面反射、拡散反射、法線マッピングといったシェーダを組み合わせて表現するが、実行時にはそうしたシェーダモジュールを1つにまとめたシェーダとして構築して走らせなければならない。登録しておいたシェーダプログラムモジュールを実行時に自在に組み合わせて活用するという仕組みは、現在のプログラマブルシェーダアーキテクチャでは実装されていないのだ。だから、現状では、ある同一アルゴリズムのシェーダプログラムでも、そのシェーダ内で取り扱う光源の数が異なれば、“別のシェーダプログラム”として用意しておかなければならない。だから、実際に実装したシェーダアルゴリズムは数十種類でも、シェーダプログラム自体は数百、数千というバリエーションを用意しなければならなくなっている。 これは“残された課題”として早急に改善したいとしている。 ・General Processing GPUのプログラマビリティが向上したことでこれまでCPUでやらせていたような汎用計算から複雑なアルゴリズムまでをGPUで実装できるようになってきた。こうしたGPUを取り巻くソフトウェアパラダイムを「汎用目的のGPU活用」の意を込めた「GPGPU: General Purpose GPU」という名で呼ぶようになってきている。 Boyd氏によれば、次世代DirectXでは、こうしたGPGPU向けの対応が強く要望されているのだという。
GPUでやりたい3Dグラフィックス処理以外のテーマとしてはヒストグラム生成のような2D画像処理、たたみ込み演算、フーリエ変換のような多量なデータに対する高密度計算、物理シミュレーション、流体物理シミュレーション、キネマティックス (運動学) のようなベクトルデータに対する線形代数処理などが挙げられている。現状でも一部のテーマについては実用化がなされつつあるが、GPUの3Dグラフィックスに特化されたハードウェア都合が邪魔になり、実装にはそのGPU特有の都合を回避したり吸収するような工夫が必要になっている。次世代DirectXでは、GPGPUのために配慮した仕組みの実装を検討したいということのようだ。
・Future Trends in Displays 最近登場し始めたHDRディスプレイや広色域ディスプレイへの対応を、そうしたディスプレイメーカーとともに行なっていることが示唆された。 現在、AV家電の分野ではDEEP COLORやXV.YCCといった広色域フォーマットが提唱され対応機器も登場しつつあるが、セルソフトがこれに対応してくる可能性は、互換性の観点から厳しいと言われている。 これに対し、動的なリアルタイム処理が可能なPCコンテンツ、つまりは3Dゲームのようなものでは、そうした対応は難しくない。たとえば3DゲームグラフィックスにおいてHDRレンダリングされているフレームを、広色域/HDRディスプレイ機器と接続されている場合に限り、トーンマッピングの段階で広色域フレームとして出力したり、あるいはHDRフレームとして出力したりすることは容易だからだ。
次世代DirectXでは、そうした新世代のディスプレイ機器への対応が検討されているのだ。
■ 5年先よりさらに遠い未来のDirectXは?
IntelやAMDのようなCPUメーカーは、CPUのマルチコア化を推し進め、2年で2倍のペースでコア数を増やしている。また、CPUメーカーは、CPUとGPUとの統合を推し進める計画を打ち出しており、そうなれば現在のような、GPUを基軸とした3DグラフィックスAPIのスタイルで進化させていただけでは、未来のコンピューティングモデルやソフトウェアモデルとのずれが出てきてしまうかもしれない。そもそもそうした、新しいコンピューティングモデルやソフトウェアモデルをDirectXでカバーすべきなのかという議論も出てくるだろう。 CPUは10年以内には数コアから十数コアの「マルチコア」から、数十コア、さらには数百コアの「メニーコア」へ進化することが確実視されている。
さらに前述したようなCPUとGPUとの統合のことも考えると、前出のGPGPUというテーマも、GPUでどう実装するか……という方策論を超えた、より一般化した次元で議論する必要がある。
よりプロセッサ (CPU、GPU) に近いローレベル言語としてはNVIDIAは「CUDA」、AMDは「Close to Metal」を出してきている。 これらが、もしかすれば、そうしたコンピューティングテーマのためのプログラミングモデルの標準を勝ち取るかもしれないが、いずれにせよ、Boyd氏はDirect3Dのような実装が向いていることを確信している。理由は4つあるとBoyd氏は述べた。 ・1つ、膨大なプロセッサ数 (コア数) の増加への対応が容易である プロセッサ数 (コア数) が2年おきに2倍になっていくという状況下では、アプリケーションの観点からすれば作成したプログラムが、次の年のCPU/GPUではスケーラブルにパフォーマンスが向上することが期待される。その場合、アプリケーションは特定のCPU/GPUに特化していてはだめで、将来にわたってCPU/GPUの特徴を吸収するエンジン的 (≒API) な存在が不可欠になる。
こうしたテーマはDirectX (Direct3D) は'90年代の半ばから取り扱ってきたものであり、一日の長があるというわけだ。
・2つ、並列データプログラミングモデルへの対応がすでになされている CPUはマルチコア化が、そしてGPUは演算器の数が増やされていく中で、CPUとGPUは互いに歩み寄るような進化を遂げていくことになる。具体的にはCPUはより並列化処理を得意とするようになり、GPUはより高度で複雑なロジックを処理できるようになるということだ。いずれにせよ、この時代のCPUやGPUを使ったコンピューティングでは、ともに並列データ処理 (Data parallel Processing) を実行させることが重要になってくるはずだとBoyd氏はいう。もちろんそうは言ってもCPUは相互依存関係の強い小さなデータの固まりを複雑なロジックで処理することが任されやすく、GPUは相互依存関係の弱い大きなデータの固まりを単純なロジックで処理することが任されやすい。 同じ並列データ処理ではあるが、微妙に異なるコンセプトの並列データ処理を同時にこなせる仕組みが、遠い未来のコンピューティングには必要になってくるというのだ。それにはやはり微妙に違うプログラミングモデルの差異を吸収する仕組みが必要になってくる。
Boyd氏は、それがDirectX (Direct3D) になるのではないか、と主張する。
・3つ、メモリ性能制約の中での最高のパフォーマンスが得られる メモリ帯域の向上率は、演算器の集積向上率と比較すると非常に緩やかだ。コンピューティングにおけるスループットはこれからも当面はメモリ速度によって足を引っ張られる未来が確定的だ。そのためCPUやGPUは、それぞれの得意とするコンピューティングテーマに最適なメモリシステムの実装をこれからもしていくことになる。 遅いメモリの読み書きを嘆いても始まらず、この弱点を隠蔽するようなコンピューティングがますます重要になってくる。 メモリレイテンシの間に圧倒的な数の演算器を酷使して、最高のスループットを持続させるストリーミング・データ入出力が重要になるのだ。
DirectX (Direct3D) はもともとそうしたストリーミングデータ入出力を前提に設計されてきており優位なのだとBoyd氏はいう。
・4つ、次世代コンピューティングで必要な機能をいち早く実装してきている CPUにしろGPUにしろ、プロセッサの進化はたしかに高度な計算を可能にしたり、多量のデータ処理を実現化するが、その進化のためのモチベーションは何かといえば実は答えは単純。「新しいアルゴリズムを現実的な実行速度で処理したり、開発したソフトウェアをより高速に動かしたい」というところに原動力があるのだ。 ゲームアプリケーションは、その時代においてもっとも高度なコンピューティングテーマを現実的な形でリアルタイム実装した形態であり、開発者やユーザーからはとどめなく高度な機能や新しい表現の実装が望まれ続ける。いわば、次世代コンピューティングになにが必要なのかが、直感的にわかりやすい形で要求され続けるのがゲームアプリケーションなのだ。
DirectX (Direct3D) はゲームアプリケーションのためのAPIであり、いわば次世代コンピューティングに必要なテーマをいち早く取り入れる窓口になってきた。だからこそ、DirectX (Direct3D) は、次世代コンピューティングの進化のためのプラットフォームとして有用であり続けるだろうとBoyd氏は予見する。
■ まとめ~次世代DirectXは次世代コンピューティングシの中核を担うものとなる? 今回のBoyd氏の講演は、前半は、現在のDirectX (Direct3D) のわかりやすい進化形の話であった。 しかし、後半は、かなりアグレッシブな内容で、実質的に「DirectX (Direct3D) を、マルチメディアコンポーネントAPIから、次世代のベクトルコンピューティングおよび並列データ処理コンピューティングのプラットフォームとして進化させていきたい」と意思表明したようにもとれて、センセーショナルで興味深い。 CPUとGPUの境目が薄れ、なおかつCPUとGPUが統合された未来においても、DirectX (Direct3D) は根幹APIとして生き残ろうとしている意志が伝わってくる。
現在のDirect3Dは、現時点でのMicrosoftの最新OS「Windows Vista」のGUIコアシステム「AERO」実現のために統合実装されたが、今回のBoyd氏の話を100%そのまま鵜呑みにしていいならば、次世代以降のWindowsでは、GUIだけでなく、DirectXがコンピューティングシの中核を担うものとして統合されるような未来図がおぼろげながら見えてくる。
□Game Developers Conference(英語)のホームページ http://www.gdconf.com/ □Game Developers Conference(日本語)のホームページ http://japan.gdconf.com/ □関連情報 【2007年3月】Game Developers Conference 2007 記事リンク集 http://game.watch.impress.co.jp/docs/20070308/gdclink.htm (2008年2月21日) [Reported by トライゼット西川善司]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|