DirectX 11 と DirectX 12 の違い: 違いは何ですか? どちらを使用する必要がありますか?
DirectX 12 は、2015 年に Windows 10 と共にリリースされました。Microsoft の DirectX 12 は、そのリリースにより、ゲーマーとゲーム開発者に新しい時代をもたらしました。GPU のパフォーマンスを向上させながら CPU のオーバーヘッドを削減できる DirectX 12 は、すぐにその名を馳せました。
しかし、パフォーマンスの向上は、DirectX 11 から DirectX 12 に切り替えるのと同じくらい簡単でしょうか? DirectX 11 と 12 の違いを見てみましょう。
Microsoft の DirectX とは何ですか?
Microsoft DirectX の概要で説明したように、DirectX は、マルチメディアに関連するタスクを処理するために使用される API のコレクションです。これには、Windows や Xbox などの Microsoft ベースのプラットフォームでのゲーム プログラミングが含まれます。コンテキストを提供するために、API について簡単に説明しましょう。
アプリケーション プログラミング インターフェイス (API) を使用すると、2 つ以上のコンピューター プログラムが相互に通信できるようになります。これについては、API の概要で説明します。電話のようなものと考えてください。お母さんが食料品のリストをテキスト メッセージで送信すると、携帯電話がそのデータを受信して表示します。それは基本的にAPIです。
DirectX 11 と DirectX 12 の違いは何ですか?
では、DirectX 11 と DirectX 12 の違いは何ですか? 簡単に言えば、DirectX 12 は DirectX の最新バージョンです。この 2 つの最も顕著な違いの 1 つは、ハードウェアとの対話方法です。DirectX 11 で開発されたほとんどのゲームは、2 ~ 4 個の CPU コアしか使用しません。これらのコアの 1 つは通常、GPU に何をすべきかを伝える専用です。
その後、ゲームは残りのコアを使用して、ゲームのパーティクルや描画距離など、CPU を集中的に使用するさまざまな設定を処理します。一方、DirectX 12 は、CPU のワークロードを複数のコアに分散し、すべてのコアが同時に GPU と通信できるようにします。
DirectX 12 には、さらに便利な機能がいくつか付属しています。これには、非同期コンピューティングとパイプライン状態オブジェクト (PSO) が含まれます。非同期コンピューティングは、複数のワークロードを並行して処理できるようにすることで、GPU の使用率を高めます。これにより、基本的に GPU の潜在能力が最大限に発揮されます。
GPU は、グラフィック レンダリング以外にも、機械学習アルゴリズムの実行など、さまざまなタスクを処理します。DirectX 11 では、GPU はこれらのタスクを一度に 1 つだけ、特定の順序で実行できます。これが発生すると、すべての GPU リソースが使用されていないため、パフォーマンスが低下します。
レストランのウェイターのようなものだと考えてください。ウェイターが最初に注文を受け取ると、最初に何を飲みたいか尋ねます。飲み物を受け取ると、メインコースに何が欲しいか尋ねられます。ご注文は段階的に行われます。メインコースを食べる前に、ウェイターがデザートに何が欲しいか尋ねることはありません. これは効果的ですが、可能な限り効率的ではありません。
コンピューティングでは、ウェイターの各タスクは異なる GPU リソースによって処理されます。飲み物を受け取るまで、メイン コースの注文に必要な GPU リソースはアイドル状態になります。DirectX 12 の非同期コンピューティングにより、ファースト フード チェーンのように、ウェイターが一度にすべての注文を受けることができます。これにより、GPU の使用率が最大になり、ゲームのパフォーマンスが向上します。
DirectX 12 では、PSO も導入されました。DirectX 11 では、ゲームのジオメトリがレンダリングのために GPU に送信されるときに、さまざまなハードウェア設定がこのデータの解釈とレンダリングを担当します。これはグラフィックス パイプラインと呼ばれ、GPU がフレームをレンダリングするときに発生するデータの入力と出力の流れです。ただし、DirectX 11 のグラフィック パイプラインは完全ではありません。
このパイプラインには、他のコンポーネントの中でも、ラスター化状態、ブレンド状態、深度ステンシル状態など、さまざまな状態のコレクションが含まれています。DirectX 11 では、これらの異なる状態間に依存関係があります。その結果、前の状態が定義されるまで、1 つの状態を完了することはできません。これにより、GPU の使用率が低下し、CPU オーバーヘッドが増加しますが、パフォーマンスが低下します。
これを回避するために、DirectX 12 では、グラフィックス パイプライン全体の状態を記述するオブジェクトである PSO が導入されました。PSO は、イメージの作成に必要なさまざまな状態とコンポーネントを含むボトルのようなものです。これにより、GPU は、現在のグラフィックス パイプラインに基づいて状態を継続的に再計算する代わりに、すべての依存状態を前処理できます。
これにより、DirectX 11 で見られる CPU オーバーヘッドが大幅に削減され、パフォーマンスが向上します。では、この違いは実際にはどのように見えるのでしょうか? Microsoft によると、DirectX 12 は CPU オーバーヘッドを最大 50% 削減し、GPU パフォーマンスを最大 20% 向上させます。これらは大幅な改善ですが、同じ結果が得られるわけではありません。
DirectX 11 から DirectX 12 への切り替えが簡単ではない理由
DirectX 11 は、2009 年 10 月 27 日に Windows Vista 向けに初めてリリースされました。そのため、2015 年に DirectX 12 が続き、DirectX 11 と DirectX 12 の間には 6 年のギャップがあります。この間、何千ものゲームが DirectX 11 を使用して開発されました。残念ながら、DirectX 11 から DirectX 12 への移行は簡単ではありません。
DirectX 11 は、高レベル API と呼ばれるものです。簡単に言えば、高レベル API は、開発者にとって扱いやすいものです。その結果、安定した、洗練された、プレイ可能なゲームが実現します。一方、DirectX 12 は低レベルの API であり、DirectX 11 とは異なります。開発者はこれを使用して最適化をきめ細かく微調整できますが、使用するには幅広い知識が必要です。
そうは言っても、DirectX 12 で開発されたゲームは、API に関する開発者の知識によってはパフォーマンスが低下する可能性があります。DirectX 12 には改善点がありますが、それは開発者がどれだけうまく実装できるかにかかっています。このため、多くの開発者は DirectX 11 のような高レベル API に固執することを選択しています。
DirectX 11 または DirectX 12 を選択する必要がありますか?
答えは、実行しようとしているゲームなど、いくつかの要因によって異なります。たとえば、Guild Wars 2 は DirectX 11 で実行されます。OS とハードウェアが DirectX 12 を使用している場合でも、ゲームが DirectX 11 をサポートしていないため、Guild Wars 2 で DirectX 11 を選択するオプションはありません。これは完全に開発者である ArenaNet の決定です。
信じられないかもしれませんが、ArenaNet が DirectX 9 から DirectX 11 に切り替えるのに 9 年かかりました。しかし、DirectX 11 と DirectX 12 の両方をサポートするゲームがいくつかあります。ゲームの設定を通じて、ユーザーは両方のバージョンを切り替えることができます。要約すると、すべてのゲームが DirectX 11 と DirectX 12 の両方をサポートしているわけではありません。
DirectX 11 と DirectX 12 のどちらを選択できるかは、ハードウェアによっても異なります。最近の GPU はほぼすべて DirectX 12 をサポートしますが、Radeon HD 4870 のような古い GPU では同じことは言えません。2008 年にリリースされたこの GPU は DirectX 10 までしかサポートしていません。 DirectX 11 および DirectX 12 を使用して実行される最新のゲーム。
DirectX 12 は正しい選択ですか?
全体として、DirectX 11 から DirectX 12 への切り替えは、思ったほど白黒ではありません。ハードウェア、ソフトウェア、オペレーティング システム、およびゲームが両方をサポートしているかどうかなど、さまざまな要因によって異なります。決定を下す前に、これらすべてを考慮する必要があります。これは、将来の世代の DirectX にも当てはまる可能性があります。
コメントを残す