マイクロソフトから朗報がリリースされました そしてそれは最近です それを知らせた ブログ投稿経由 D3D9On12レイヤーのソースコードを開く Direct3D 9(D3D9)コマンドをDirect3D 12(D3D12)コマンドに変換するDDI(デバイスドライバーインターフェイス)デバイスの実装。
マイクロソフトによるこの動きにより、開発者はゲームでDirectX11からDirectX12に簡単に移行できるようになります。 DX12変換レイヤーは、基本的に、グラフィカルな概念とコマンドをDX11スタイルのドメインからDX12スタイルのドメインに変換するためのヘルパーライブラリです。
D3D9On12マッピングレイヤーについて最後に言及してからしばらく経ちました。 クイックアップデートとして、D3D9コマンドをD3D12デバイスドライバーインターフェイス(DDI)として機能するD3D9にマップします。 このマッピングレイヤーを使用すると、古いD3D9アプリケーションを、D3D9ドライバーがない可能性のある最新のシステムで実行できます。 前回のブログ投稿以降、Alpha to Coverage拡張機能のサポートを追加し、いくつかのバグを修正し、オープンソースのコードベースをクリーンアップしました。.
これは間違いなく良いニュースであり、それは レイヤーと連携するさまざまなプロジェクトが恩恵を受けることができるようになりました、それ自体、レガシーアプリケーションがD3D12のみをサポートする環境で動作できるようにするためです。 例えば これは、プロジェクトに基づいてD3D9を実装するのに役立ちます vkd3dおよびVKD3D-プロトンこれらは、D3D12呼び出しをVulkanグラフィックAPIに変換することによって機能するLinux用のDirect3D12実装を提供するためです。
D3D9On12は、グラフィカルコマンドをD3D9からD3D12にマップするレイヤーです。 D3D9On12は、D3D9 APIの実装ではなく、D3D9 DDI(デバイスドライバーインターフェイス)ユーザーモードの実装です。 つまり、d3d9.dllと呼ばれるバイナリではなく、d3d9on12.dllと呼ばれます。
アプリケーションがD3D9デバイスを作成するとき、ネイティブのD3D9デバイスではなく、D12D3On9デバイスを選択できます。 これが発生すると、d3d9on12.dllがD3D9ランタイムによってロードされ、初期化されます。 アプリケーションがレンダリングコマンドを呼び出すと、D3D9はそれらのコマンドを検証してから、他のD3D9ドライバーと同様に、それらのコマンドをDDI D3D9に変換し、D12D3On9に送信します。
D3D9On12は、これらのコマンドを受け取り、D3D12 API呼び出しに変換します。これらのコマンドは、D3D12ランタイムによってさらに検証され、オプションでD3D12デバッグレイヤーが含まれます。D3D12DDIに変換され、D3D12ドライバーに送信されます。
また、 このプロジェクトは、Windows10に含まれている同様のサブシステムのコードに基づいています。 コードD3D9On12の公開に注意する必要があります 機会を提供します コミュニティの代表者が バグ修正と最適化の追加に参加し、 また、D3D9 DDIドライバーの実装と、D3D12でさまざまなグラフィックAPIを変換するためのそのようなレイヤーを作成するためのフレームワークを研究するための例としても役立ちます。
なぜオープンソースなのか?
D3D9On12は数年前からWindows10の一部であり、その間に安定性と使いやすさが向上しました。 オープンソースにする:コミュニティが追加のバグ修正またはパフォーマンスの改善に貢献できるようにします。
D3D12TranslationLayerの使用方法の別の例として機能します
D3D9DDIの実装がどのように見えるかに興味のある人に見てください
同時に、DXBCファイルに署名する機能を可能にするDXBC署名者パッケージがリリースされました サードパーティのツールキットによって任意に生成されます。 D3D9On12は、このパッケージを使用して、シェーダーを新しいモデルに変換することによって生成されたDXBCに署名します。
最後に あなたがそれについてもっと知りたいなら、Microsoftがブログで作成した出版物の詳細を確認できます 次のリンクで。