Direct3D 12 の概要What is Direct3D 12?

DirectX 12 では、DirectX の核となる 3D グラフィックス API である Direct3D の次期バージョンが導入されます。DirectX 12 introduces the next version of Direct3D—the 3D graphics API at the heart of DirectX. Direct3D 12 は、以前のバージョンよりも高速かつ効率的になっています。Direct3D 12 is faster and more efficient than any previous version. Direct3D 12 は、より豊かなシーン、より多くのオブジェクト、より複雑な効果を実現し、最新の GPU ハードウェアを十分に活用できます。Direct3D 12 enables richer scenes, more objects, more complex effects, and full utilization of modern GPU hardware.

Direct3D 12 の速度と効率がこれほど向上した理由How can Direct3D 12 be so much faster and more efficient?

Direct3D 12 は、以前のバージョンよりも低いレベルのハードウェア アブストラクションを実現するという点でユニークです。これにより、タイトル (またはその他のアプリケーション) のマルチコア CPU スケーリングが格段に向上します。Direct3D 12 is unique in that it provides a lower level of hardware abstraction than previous versions do, which allows you to significantly improve the multi-core CPU scaling of your title (or other application). 1 つには、Direct3D 12 では、タイトルが独自のメモリ管理を行うことが挙げられます。For one thing, with Direct3D 12, your title is responsible for its own memory management. また、Direct3D 12 を使用することで、コマンド のキューとリスト記述子テーブル、簡潔なパイプライン状態オブジェクトなどの機能を通じて GPU のオーバーヘッドを削減できます。これはタイトルやアプリケーションにとってメリットです。In addition, by using Direct3D 12, your titles and applications benefit from reduced GPU overhead via features such as command queues and lists, descriptor tables, and concise pipeline state objects.

Direct3D 12 および Direct3D 11.3 では、レンダリング パイプラインに関する一連の新機能が導入されました。Direct3D 12, and Direct3D 11.3, introduce a set of new features for the rendering pipeline.

  • 確実なヒット検出を可能にする保守的なラスター化Conservative rasterization to enable reliable hit detection.
  • ストリーム化された 3 次元リソースを、すべてビデオ メモリにある場合と同じように処理できるようにするボリューム タイル リソースVolume tiled resources to enable streamed three-dimensional resources to be treated as if they were all in video memory.
  • 確実な透過的レンダリングを可能にするラスタライザー順序指定ビューRasterizer-ordered views to enable reliable transparency rendering.
  • 特殊なシャドウ処理やその他の効果を実現する、シェーダー内でのステンシル参照の設定。Setting the stencil reference within a shader to enable special shadowing and other effects.
  • テクスチャ マッピングおよび型指定された UAV (順序指定されていないアクセス ビュー) の読み込みが向上。Improved texture mapping and typed unordered access view (UAV) loads.

Direct3D 12 への投資の度合いに関する考慮事項How deeply should I invest in Direct3D 12?

Direct3D 12 は、グラフィックス開発者に主に 4 つの利点をもたらします (Direct3D 11 と比較した場合)。Direct3D 12 provides four main benefits to graphics developers (compared with Direct3D 11).

  • CPU のオーバーヘッドを大幅に削減。Vastly reduced CPU overhead.
  • 電力消費量を大幅に削減。Significantly reduced power consumption.
  • GPU の効率が最大で (約) 20% 向上。Up to (approximately) 20% improvement in GPU efficiency.
  • Windows 10 デバイス (PC、タブレット、コンソール、モバイル) 向けのクロスプラットフォーム開発。Cross-platform development for a Windows 10 device (PC, tablet, console, mobile).

Direct3D 12 は上級のグラフィックス プログラマ向けに設計されています。Direct3D 12 is designed for advanced graphics programmers to use. グラフィックスに関するかなりの専門知識と、高度な微調整が必要となります。It calls for significant graphics expertise, and a high level of fine-tuning. Direct3D 12 は、マルチスレッド、CPU/GPU の徹底した同期、およびある目的から別の目的へのリソースの移行と再利用を、最大限に活用するように設計されています。Direct3D 12 is designed to make full use of multi-threading, careful CPU/GPU synchronization, and the transition and re-use of resources from one purpose to another. これらの技法には、かなりの程度のメモリ レベルのプログラミング スキルが必要です。These are techniques that require a considerable amount of memory-level programming skill.

Direct3D 12 のもう 1 つの利点は、API フットプリントが小さいことです。Another advantage that Direct3D 12 has is its small API footprint. 関数の数は 200 前後ですが、手間がかかる処理を行うのはその約 3 分の 1 です。There are around 200 functions; and about one third of those do all the heavy lifting. つまり、グラフィックス開発者は、多数の API 名を暗記することなく API セット全体を習得できます。That means that you, as a graphics developer, should be able to educate yourselves about—and master—the full API set without having to memorize too many API names.

Direct3D 11 は、Direct3D 12 とともに引き続き有効な選択肢です。Direct3D 11 continues to be a viable option alongside Direct3D 12. Direct3D 12 の新しいレンダリング機能の多くは、Direct3D 11.3 で提供されています。Many of the new rendering features of Direct3D 12 are available in Direct3D 11.3. Direct3D 11.3 は低レベルのグラフィックス エンジン API で、Direct3D 12 ではそれがさらに強化されています。Direct3D 11.3 is a low-level graphics engine API; and Direct3D 12 goes even deeper.

開発チームは、少なくとも 2 つの方法で Direct3D 12 のタイトルにアプローチできます。There are at least two ways that your development team can approach a Direct3D 12 title.

Direct3D 12 のみを使用Use Direct3D 12 exclusively

Direct3D 12 のすべての利点をフルに活用するプロジェクトでは、高度にカスタマイズされた Direct3D 12 エンジンを新たに開発する必要があります。For a project that takes ultimate advantage of all of the benefits of Direct3D 12, you should develop a highly customized Direct3D 12 engine from the ground up.

グラフィックス開発者として、タイトル内でのリソースの使用と再利用について理解し、アップロードとコピーを最小限に抑えることでその利点を活用できる場合は、こうしたタイトルに対応できる高効率のエンジンを開発し、カスタマイズできます。If you, as a graphics developer, understand the use and re-use of resources within your titles, and you can take advantage of that by minimizing uploading and copying, then you can develop and customize a highly efficient engine for those titles. パフォーマンスが大きく向上して CPU 時間が解放されるため、描画呼び出しの数を増やして、グラフィックスにさらに光沢を加えることができます。The performance improvements could be very considerable, freeing up CPU time to increase the number of draw calls, and so adding more luster to your graphics.

プログラミングへの投資は重要です。プロジェクトのデバッグとインストルメンテーションについては最初から考慮するようにしてください。The programming investment is significant, and you should consider debugging and instrumentation of the project from the very start. スレッド処理、同期、およびその他のタイミングに関するバグが課題となる可能性があります。Threading, synchronization, and other timing bugs can be challenging.

Direct3D 12 と Direct3D 11 を併用Use Direct3D 12 in concert with Direct3D 11

短期的なアプローチとして、Direct3D 11 のタイトルで確認されているボトルネックに対処する場合があります。A shorter-term approach would be to address known bottlenecks in your Direct3D 11 title. この場合は、2 つの API バージョンの連携を可能にする Direct3D 12 相互運用機能と D3D11On12 のいずれかの手法 (または両方) を使用できます。You can address those by using Direct3D 12 interop and/or D3D11On12 techniques, which enable the two API versions to work together. このアプローチでは、既存の Direct3D 11 グラフィックス エンジンへの変更が最小限で済みます。This approach minimizes the changes necessary to an existing Direct3D 11 graphics engine. ただし、パフォーマンスの向上は、Direct3D 12 のコードが対処するボトルネックの解消に限られます。However, the performance gains will be limited to the relief of the bottleneck that the Direct3D 12 code addresses.

Microsoft DirectX 12 (およびグラフィックスに関する教育) のビデオMicrosoft DirectX 12 (and graphics education) videos

グラフィックス開発者向けの教育が強化されましたEnhanced education for graphics developers. これらのビデオでは、プレゼンテーション モード、DirectX 12 への移行、保守的なラスター化、グラフィック ツール、ANGLE、Win2D、各種イベント (例: GDC、Build) などのトピックを取り上げています。These videos cover topics such as presentation modes, porting to DirectX 12, conservative rasterization, graphics tools, Angle, Win2D, and events such as GDC, Build, and more. DirectX 12 に関する技術コンテンツは、先頭に "DirectX 12" と示されています。Technical DirectX 12 content is prefaced with DirectX 12. ここで、Direct3D 12 機能チームからヒントやテクニックを直接学ぶことができます。Come here to learn tips and tricks directly from the Direct3D 12 feature team. 最新のリリースとツールを利用して最高のゲームを作り出すためにお役立てください。We want to help you to use our latest releases and tools to make your game the best it can be!

まとめConclusion

Direct3D 12 は、グラフィックス エンジンのパフォーマンスを飛躍的に向上させます。Direct3D 12 is all about dramatic graphics engine performance. これを実現するために、開発の容易さ、高レベルのコンストラクト、およびコンパイラ サポートの規模が縮小されています。Ease of development, high level constructs, and compiler support have been scaled back to enable this. ドライバー サポートとデバッグの容易さは Direct3D 11 と変わりません。Driver support and ease of debugging remain on a par with Direct3D 11.

Direct3D 12 は新たな領域です。Direct3D 12 is new territory. 探究心のあるエキスパートによるこの領域への挑戦が期待されます。Territory that's waiting for the inquisitive expert to come and explore.