fc2ブログ

22世紀少年


    [GDC 2014]DirectX 12,ついに発表。その特徴に迫る


    会場のスタッフは皆「XII」Tシャツを着ており,お祭りムード
    DirectX
     北米時間2014年3月20日,予告されていたとおりではあるが,Microsoftは,Game Developers Conference(以下,GDC)2014で「DirectX 12」を正式に発表した。
     DirectX 11が発表されたのは2009年。Windows 7とほぼ同時期にリリースされたことを憶えている人もいることだろう。2012年にWindows 8とDirectX 11.1が,2013年にはWindows 8.1とDirectX 11.2がリリースされているが,メジャーバージョンアップとしては本当に久しぶりということになる。

    現地時間20日,朝一発めのセッションであるにもかかわらず,会場はオープン前から長蛇の列ができた。当然,会場は超満員状態に
    DirectX
    DirectXの歴史
    DirectX


    DirectX 12登場の背景


     「GPUの性能はどんどん向上している。CPUは,1コアあたりの性能向上率はそれほどでもなくなっている一方,CPUのコア数自体は増加傾向にある。では,そんな状況にあって,ゲーム開発者は一体何を欲しているのか」。DirectX 12の開発は,この問いかけが起点になっているという。

    今日(こんにち)のプロセッサ技術トレンドは,「コア数増大」方向に舵を切っている。このアーキテクチャを効率よく扱えないプラットフォームは存在価値が低いと言わざるを得ないが,DirectXは大丈夫なの?
    DirectX

    Anuj Gosalia氏
     セッションで登壇したMicrosoftのAnuj Gosalia氏によれば,ゲーム開発者が強く求めているものの1つに,ゲーム機ライクな「GPUを直接ドライブ(≒駆動)できるようなAPI」があったとされる。そして切望されるもう1つの要素が,「ゲームアプリケーションとGPUの間のオーバーヘッドを極力なくすこと」だったそうだ。

     氏は,そうした要望に応える形で提供されることとなるのがDirectX 12であると位置づけていた。

    ゲーム開発者は何を求めているのか?
    DirectX

     なお,DirectXとは,Microsoftが自社プラットフォームに提供するマルチメディアプログラミングAPIのことで,本来はサウンドやネットワーク,入力インタフェース関連などまでを網羅したものとなるが,今回発表されたのは「DirectX 12」の3DグラフィックスAPI部分「Direct3D 12」になる。
     ただ,慣例的に「DirectX≒Direct3D」とされる傾向が強く,本セッションでもそのように扱われていたため,本稿もそれに倣い,Direct3D 12とDirectX 12を基本的に区別しない。この点はご了承のほどを。

    DirectX
     さて,今回発表されたDirectX 12だが,結論からいうと,実効パフォーマンスを改善する目的のアーキテクチャ改変がアップデートの中心となっている。「Direct」(ダイレクト)と言いながら,あまりダイレクト感がなくなってきたDirectXに,近代流のダイレクト感を持ち込もうとする方向の改変なのだ。

     DirectXが誕生した1990年代中期は,さまざまなメーカーがそれぞれ独特なアーキテクチャに基づくGPUを用意しており,そして,そこには機能差もあったことから,“違い”を吸収するための抽象化レイヤーを分厚くする必要があった。当時のGPUは,データやパラメータを与えて「GPUの機能を呼び出す」というプログラミングモデルだったこともあり,ゲームアプリケーションとGPUまでの“距離感”が相当に大きかった,という表現も可能だろう。

     しかし現在,PC向けGPUのメジャープレイヤーはIntelとNVIDIA,AMDの3社のみであり,モバイルデバイスや組み込み機器向けGPUですらも,3社いずれかのアーキテクチャに似た構造となった。かつてのような分厚い抽象化レイヤーはもはや必要なくなってきている。
     そこでMicrosoftは,1990年代に構築された古い土台をすべて取り去って,すっきりした透明性の高いアーキテクチャへと,DirectXを改変することにしたのである。

    DirectX 12の進化ポイント
    DirectX

     またMicrosoftは,WindowsベースのPCだけでなく,Windows PhoneとXbox OneにもDirectX 12を提供する計画があると今回明らかにしており,グラフィックスAPIを一気に刷新する心づもりでいる。一時期は「DirectXはもう終わり」とまことしやかに囁かれるほどだったが,ここで心機一転の再スタートを図ろうということなのだ。

    DirectX 12はすべてのMicrosoftプラットフォームに提供される
    DirectX


    DirectX 12は何がどうすごいのか


     現状のDirectXは,「DirectX APIを通じてパラメータをドライバに受け渡し,ドライバ側がGPUに向けて(描画)コマンドとパラメータ列を形成して発行する」構造になっているが,ここに問題が2つある。

     1つは,DirectXが提供している「APIを利用してDirectX側が作り出すコマンドとパラメータのペア」が,GPU内部のハードウェアを直接ドライブするようにはなっていない点だ。これは,「DirectXのアーキテクチャが古すぎて,実在する最新世代のGPUアーキテクチャとかけ離れすぎてしまった」と考えれば分かりやすいだろうか。

    DirectX 7~8時代,DirectX APIとGPUアーキテクチャは1対1にかなり近い構造だったのだが(左),DirectX 9以降で,ここに開きが生じ始めた(右)
    DirectXDirectX

    上のスライドで言う「開いたところ」を埋める存在がDirectX 12だ。実のところ,AMDのMantleもまさにこの立ち位置にいる
    DirectX
     この問題を解決するために導入されるのが「Pipeline State Object」(以下,PSO)という概念だ。
     詳細は後日あらためてお伝えしたいと思うが,誤解を恐れずに簡略化して言うと,PSOというのは,グラフィックスパイプラインとGPU内部ハードウェアとの対応を一意的に定義づけて利用する仕組みのこと。PSOを定義づけておけば,それ以降はGPUに対し「これからお願いする描画は,PSOで定義した工程表(パイプライン)ベースでお願いします」と発注できる。
     従来のDirectXでは「頂点シェーダでこの処理を行う」「ピクセルシェーダでこの処理を行う」といった感じの,細切れな指示になっていたため,処理のストール(stall,停止)が生じやすかった。その点PSOなら,GPUはあらかじめ定義された工程表に基づいて,すぐに処理に取りかかれるのである。

     もう1つは,コマンドを伝送する仕組みそのものの問題だ。
     従来のDirectXでは,APIを通して,「描画の件なんですがね」「第一パラメータは●●です」「第二パラメータは××です」といった感じに,コマンドを逐次的に発行していた。砂時計にたとえるなら,上がCPU,下がGPUで,上下は大きく開いているのに,中央部がぎゅっとすぼまったイメージ。砂粒(≒仕事)は1本の線状でしか,GPUのほうに落ちていかないのである。

     その点,DirectX 12では,あらかじめ確保しておいたメモリバッファ上で描画コマンドやパラメータを形成しておき,これをドライバへ一気に渡せるようになった。当然,メモリバッファ上に描画コマンドやパラメータを形成する処理は複数のCPUスレッドで並列に実行できる。つまり,マルチスレッドを効果的に利用できるということだ。砂時計でいえば,中央のすぼまった部分が押し広げられたようなイメージだろうか。

    DirectX 12における根幹的な進化ポイント。主にオーバーヘッドを減らし,大量に仕事を発注できる仕組みを実装したという感じ
    DirectX

     「ドライバを通じてGPU側に伝送される前の描画コマンド」はドライバ側でGPUのネイティブ命令に変換されるので,ここにまだ抽象化レイヤーは存在することになるが,まとまった量の描画コマンド列を一気に発行できる以上,効率は従来比で格段に改善する。
     さらにDirectX 12では,この「GPU側で直接実行できるように変換されたネイティブコマンド列」を保存しておける仕組みも導入された。これは「Bundles」(バンドル)と呼ばれ,そのままBundlesを再発行してGPUを駆動することもできる。うまく活用すれば,抽象化レイヤーを超えた先で,超高効率でGPUをドライブすることも可能なのだ。

    DirectX 12では抽象化部分はものすごく薄く設計されている。もちろん,すべてのメーカーのGPUに対応する必要があるため,最低限の抽象化部分は残っているが,その抽象化を超えた先でのGPUドライブの仕組みも提供される。ここはDirectX 12の大きな進化ポイントといえるだろう。Mantle的とも言えるが
    DirectX

     また,テクスチャや各種データテーブルなどといった,レンダリングに必要な素材を,アプリケーション側が任意のスタイルでその素性を定義しつつグラフィックスメモリ上に置き,実際のレンダリング時には各種シェーダから自由にアクセスする仕組みも新設されている。DirectXのAPIを介して「これはテクスチャです」としていちいち宣言したり定義したりすることなく,かなりのダイレクト感をもって,グラフィックスメモリ上にデータや素材を自在に置けるようになったのである。

     CPUのプログラムにおいて,当該プログラムの開発者は,プログラム実行の各局面に応じて,確保したメモリ空間を好きに使っていた。そういった自由なメモリの使い方がGPUでもできるようになったことになる。
     もっともこれは,家庭用ゲーム機のGPUプログラミングでは結構前からそうだったので,概念的に新しいものではない。DirectX 12が,家庭用ゲーム機的なGPUプログラミング哲学を取り入れたという認識のほうが正しいので,この点は押さえておく必要があろう。

    素材やリソース周りの取り扱いの改善ポイント。CPUプログラム的な自由な取り扱いが可能になった
    DirectX


    DirectX 12のβ版は2014年後半リリース。正式リリースは2015年か


     DirectX 12にはどの程度の性能を期待できるのか。
     セッションでは,「3DMark 11」の「High Temple」を,従来どおりのDirectX 11で動作させたものと,DirectX 12に対応させて動作させたものとで,CPU負荷に違いが出るかどうかが披露された。

     その結果が下のスライドだが,DirectX 11では,4つあるCPUスレッドのうち1つで極端に負荷が高くなっている。それに対し,Bundlesを活用しているDirectX 12では,CPU負荷が極端に低い。

    DirectX
    DirectX 11での実行結果。テキストで表示された「O+」のバーが長いほど当該スレッドのCPU負荷が高いことを示すが,ここでは「Thread 0」の負荷が高い
    DirectX
    DirectX 12での実行結果。「Thread 0」のCPU負荷は極端に下がっている

     処理の内訳も下のとおり示された。下の図は,上の「Thread 0」~「Thread 3」がDirectX 11,下の「Thread 0」~「Thread 3」がDirectX 12のそれぞれ内訳だ。「App Logic」はアプリケーション実行負荷。「Direct3D」はDirect3DのAPIオーバーヘッド,「UM Driver」はユーザーモードドライバ負荷,「Kernel」はOSカーネル負荷,「KM Driver」はカーネルモードドライバ負荷,「Present」は描画表示負荷を示しているが,違いは一目瞭然といえる。

    DirectX 11(上)とDirectX 12(下)のそれぞれにおける処理の内訳
    DirectX

     セッションでは,NVIDIAによる評価版のDirectX 12ドライバ上で動作する「Forza Motorsport 5」の技術デモが公開された。こちらは性能を示すものではなく,「実際にゲームが動いている」ことを示すための目的で公開されたようだ。「PC版のForza Motorsport 5がDirectX 12ベースで開発されている」ことを示すものではないので,その点は注意してほしい。

    「Forza Motorsport 5」ベースのDirectX 12技術デモ

    Clik to Play
    Clik to Play

     気になるDirectX 12の提供時期だが,2014年後半にプレビュー版(β版)がリリースされる予定となっている。正式版は「2015年のクリスマス商戦に臨むPCゲームのリリースに間に合うような形で提供したい」という形で予告されたので,常識的に考えれば,正式リリースは2015年ということになるだろう。

    DirectX 12のプレビューは2014年後半に登場。ゲーム開発者に向けては早期アクセスが提供されるという
    DirectX


    DirectX 12にまつわる疑問に答えてみる


     最後に,セッション後の質疑応答や,セッション後に筆者が関係者に取材した情報を基に,想定される質問と回答を用意してみた。こちらも合わせて参考にしてもらえればと思う。


    Q:DirectX 12はどのOSに提供されるのか

    A:
     Windows 7とWindows 8.x(もしくはその後継OS)と見られる。間もなくサポートが終了するので当たり前といえばそれまでだが,Windows XPへの提供は「ない」と公式に否定されている。


    Q:DirectX 12はWindows以外にも提供されるのか

    A:
     セッションのレポートでも触れたとおり,Windows PhoneとXbox Oneには提供される見込み。Xbox One向けのゲームタイトルのPC向け移植やWindows Phoneへの移植が容易になるはずだ。

    Windows 7&8以降のPCだけでなく,Windows PhoneやXbox OneにもDirectX 12は提供される
    DirectX


    Q:DirectX 12の対応GPUは?

    A:
     当面はDirectX 11世代のGPUが対応製品となる見込み。NVIDIAならFermi世代,AMDならGraphics Core Next世代ということになる。


    Q:DirectX 12向けに開発されたゲームはDirectX 11環境で動作するのか。逆に,DirectX 11向けのタイトルはDirectX 12で動作する?

    A:
     DirectX 11とDirectX 12は,名前こそ「DirectX」ながら,基本アーキテクチャが異なるため,相互に互換性はない。
     実のところ,この仕切り直しは,DirectX 10の時も起こった。DirectX 10では基本アーキテクチャがDirectX 9から一新されたため,過渡期のPCゲームでは,タイトルによって,DirectX 9バイナリとDirectX 10バイナリの2つが提供されたりしていたが,DirectX 12の登場直後は同じようなことが起こるだろう。


    Q:DirectX 12で実現されているのは性能向上のためのアーキテクチャ改変“だけ”で,新しいシェーダステージの追加や,新機能の搭載はない?

    A:
     Microsoftの公式回答は「現時点では未定」。ただし,現段階でも「プログラマブルブレンド」(Programmable Blend)パイプラインと,順不同半透明描画(Order Independent Transparency),コンサバティブ・ラスタライゼーション(Conservative Rasterization)などの搭載は決定している。

    コンサバティブ・ラスタライゼーションは,ポリゴンモデルのボクセル分解化処理などに有効とされる。「Unreal Engine 4」の発表時にデモがあった「SVO-GI」では,この処理を自前のシェーダで実装していた
    DirectX


    Q:聞けば聞くほど,DirectX 12のコンセプトはMantleのそれと非常によく似ている。PSOやコマンドバッファの概念,素材の取り扱い概念はMantleと同じではないのか

    DirectX 12発表を喜ぶ関係者達。左から順にTurn 10 StudiosのChris Tector氏,MicrosoftのAnuj Gosalia氏,IntelのEric Mentzer氏,AMDのRaja Koduri氏,NVIDIAのTony Tamasi氏,QualcommのEric Demers氏
    DirectX
    A:
     そのとおり。経緯は不明ながら,仕様にはよく似ている部分がある。これまでAMD(や旧ATI Technologies)もしくはNVIDIAの提唱する「独自機能」がDirectXに採用されたことは過去にたくさんあるので,今回もそのパターンという可能性はあるが,この点についてMicrosoft,そしてAMDから公式の言及はない。
     この件に関して現時点で言えることは,AMDがDirectX 12を歓迎していることと,DirectX 12の登場によってMantleの立ち位置が微妙になることの2点だけだ。


    Q:DirectX 12で,Compute Shaderはどう扱われるのか

    A:
     Compute Shaderの取り扱いは未定。Mantleのような「非同期でのGPGPUとグラフィックスレンダリングの同時発行」も,対応するかどうかは未定とされている。


    Q:DirectX 12が登場したことで,PlayStation 4に何らかの影響はある

    A:
     直接的には「ない」が,間接的には「ある」と思われる。
     実のところ,現在PlayStation 4(以下,PS4)の開発者に向けて提供されているグラフィックスライブラリの1つに,「疑似DirectX 11ライブラリ」がある。そして,聞くところによれば,PCゲームを開発して,それをPS4にポーティングするスタイルのゲームスタジオは,この疑似DirectX 11ライブラリを活用することが多いという。正式にDirectX 12がリリースされた後は,“疑似DirectX 12ライブラリ”が提供されるはずだが,そこにタイムラグが発生したりする可能性はあるだろう。
     逆に言えば,PS4ネイティブに開発しているゲームスタジオへの影響は間接的にもあまりない。


    Q:DirectSoundとかDirectInputとか,他のDirectXファミリーはどうなるのか

    A:
     未定とのこと。ただ,「現在のところ話せる段階にはないが,最終版のDirectX 12には,これまでのDirectXと同じように,グラフィックス以外のAPIも含まれるだろう」とのコメントは得られている。


    テーマ : ■■■ニュース!(ゲーム&業界)■■■
    ジャンル : ゲーム

    tag : GDCGameDevelopersConferenceDirectX

    今 Amazon で最も売れてるゲーム


    プロフィール
    22世紀少年
    22世紀少年
    人気ブログランキング

     
    カテゴリ
    最新記事
    最新コメント
    月別アーカイブ
    ユーザータグ

    PCゲーム どうぶつの森 あつ森 あつまれ PS3 PS4 3DS ポケモン FF ペルソナ E3 周辺機器 Nintendo Conference GDC Game EA Developers PSP ペルソナ4 Switch 荒木飛呂彦 Titanfall バイオハザード ジョジョ 聖剣伝説 キングダムハーツ Steam PS5 洋ゲー ポケットモンスター ドラクエ すばらしきこのせかい Pokémon NINTENDO キャサリン GTA 未来への遺産 Earth Beyond UNITE Civilization 任天堂 コミコン ポケモンドール メロエッタ ブラック2 エレクトロニック・アーツ Sim LEGO Vita ジョジョの奇妙な冒険 ホワイト2 ポケモンGO インディーズゲーム エルダー・スクロールズ・オンライン ストラテジー 2021 Civilization: of Wizardry Sid Online GPU ゆめポイント ドリームワールド カプコン ひんやり穴 レゴ グローバルリンク ポータル CUUSOO エンターテインメントバー ニンテンドーダイレクト おもいでリンク ノーティドッグ ブラックキュレム プレイステーション3 ポケモンだいすきクラブ ARサーチャー ホワイトキュレム YouTube ゆめしま フェスミッション チャンピオンズトーナメント ポケモンワールドトーナメント 隠れ特性 Deadpool ヴァニラ・アイス ポルナレフ DIO 承太郎 ロードローラーだッ! ピカチュウ ポケモンチャレンジ カウントダウン エニックス スクウェア スクウェア・エニックス ゲノセクト 海外ゲーム アセンブルロボット Xbox360 ユークス MARVEL デッドプール メルヘンワールド プリキュア Activision アクティビジョン リアルスティール HUNTER×HUNTER ポートロイヤル ワンダーアドベンチャー オメガモン ベルゼブモン リ:デジタイズ ハンター×ハンター エクスペンダブルス2 PlayStation キッザニア 中島愛 ドルフ・ラングレン デジモンワールド デジモン ナルト Sims3 ズルッグ アーケオス シム ソニー スクウェアエニックス ファイナルファンタジー アーカイブス フィレンツェ FPS Halo ベストウイッシュ コネクション ニンテンドーWi-Fi マックでDS キュレムVS 聖剣士ケルディオ ポケモン全国図鑑Pro ケルディオ 幻のポケモン メロエッタのキラキラリサイタル LL ニンテンドー3DS ATLUS Auto Theft Grand アトラス マヨナカアリーナ International Comic‐Con LOUNGE GAMING ポケモン立体図鑑BW レトロゲーム Play Google Frostpunk シヴィライゼーション KING OF No Paradox FFXIV FIGHTERS エヴァンゲリオン CPU MOD アーカム・ナイト バットマン トロピコ5 ZOIDS WITCHER Mana Legend アイズオブヘヴン ウィッチャー Man’s Sky Microsoft 11 Windows 次世代OS Windows11 Wonder 攻略 Fear Layers ポケモンワンダー ポケモンユナイト DLC Ultimate ARK: 選ばれし運命の炎 ドラゴンクエストXII Survivor Edition Amazon Rocksmith 聖剣伝説3 ウィザードリィ TROPICO WARS DirectX シムシティ City RTS GTC Technology Entertainment Computer Sony SCEA 都市建設 PixelJunk アイカツ Cギアスキン ビギニングカップ 公式Wi-Fi大会 アップデート 空条承太郎 PSVITA ブラウザゲーム PCパーツ ドラえもん America ゲーミングマウス アーケードスティック Razer Meier’s Tropico インディーゲーム Sims STAR キーボード ボードゲーム Meier's トロピコ ドラゴンボール グラフィックカード トロゲーム  ゲームボーイ グラフィックボード ASUSTeK XBOX パックマン GameSpy マザーボード シミュレーション 

     
    アンケート投票
    ゲームに関するアンケートです。良かったら投票してみて下さい。
     
    アクセスランキング
     
    カウンター
    オンラインカウンター
    現在の閲覧者数:
    リンク
    ブロとも申請フォーム

    この人とブロともになる

    RSSリンクの表示
    QRコード
    QR