2008 年 11 月の Direct3D 11 Tech Preview の新機能
このバージョンの Direct3D 11 には、新機能、ツール、ドキュメントが含まれています。
Item | 説明 |
---|---|
テセレーション |
Direct3D 11 には、高次プリミティブの リアルタイムテセレーション をサポートする追加のパイプライン ステージが用意されています。 広範にプログラム可能な機能により、この機能により、近似手法を使用したサブディビジョン サーフェス、ベジエ パッチ、アダプティブ テセレーション、変位マッピングなど、高次サーフェスを評価するためのさまざまな方法が可能になります。 この機能は Direct3D 11 クラスのハードウェアでのみ使用できるため、この機能を評価するには、参照ラスタライザーを使用する必要があります。 実際のテセレーションのデモについては、サンプル ブラウザーで利用可能な SubD11 サンプルをチェックします。 |
コンピューティング シェーダー |
コンピューティング シェーダーは、GPU 上の汎用コンピューティングを可能にする Direct3D 11 パイプラインに依存しない追加ステージです。 コンピューティング シェーダーは、統合シェーダー コアによって提供されるすべてのシェーダー機能に加えて、順序なしアクセス ビュー、実行中のスレッドのグループ内の共有メモリ プール、同期プリミティブ、アトミック演算子、およびその他の多くの高度なデータ並列機能を介したリソースへの読み取りと書き込みの分散もサポートしています。 Direct3D 11 コンピューティング シェーダーのバリアントは、Direct3D 10 クラスのハードウェアで動作できるこのリリースで有効になっています。 そのため、実際のハードウェアでコンピューティング シェーダーを開発できますが、更新されたドライバーが必要です。 Direct3D 11 コンピューティング シェーダーの完全な機能は、Direct3D 11 クラスハードウェアのサポートを目的としているため、完全な機能を評価するには、そのようなハードウェアが使用可能になるまで参照ラスタライザーを使用する必要があります。 実際のコンピューティング シェーダーのデモについては、サンプル ブラウザーで利用可能な HDRToneMappingCS11 サンプルをチェックします。 |
マルチスレッド レンダリング |
Direct3D 11 の Direct3D 10 との主な API の違いは、 遅延コンテキストの追加です。これにより、複数のコアに分散された Direct3D コマンドのスケーラブルな実行が可能になります。 遅延コンテキストは、状態の変更などのアクションをキャプチャしてアセンブルし、後で実際のデバイスで実行できる送信を描画します。 複数のスレッドで遅延コンテキストを利用することで、アプリケーションは Direct3D11 ランタイムとドライバーで必要な CPU オーバーヘッドを複数のコアに分散できるため、エンド ユーザーのマシン構成をより適切に使用できます。 この機能は、現在の Direct3D 10 ハードウェアおよび参照ラスタライザーで使用できます。 API の使用方法のデモについては、サンプル ブラウザーで入手できる MultithreadedRendering11 サンプルをチェックします。 |
動的シェーダー リンケージ |
Direct3D 11 では、パフォーマンスに特化したシェーダーで見られる組み合わせ爆発の問題に対処するために、アプリケーションの実行中にほぼ最適なシェーダーの特殊化を可能にする限られた形式のランタイム シェーダー リンケージ が導入されています。 これは、シェーダーがパイプラインに割り当てられるときにシェーダー コード内の特定の関数の実装を指定することで実現されます。これにより、ドライバーは新しい構成で中間言語をネイティブ命令に強制的に再コンパイルするのではなく、ネイティブ シェーダー命令をインラインで迅速に行うことができます。 シェーダー開発は、HLSL へのクラスとインターフェイスの導入によって公開されます。 デモでは、サンプル ブラウザーから入手できる動的シェーダー リンケージ 11 サンプルをチェックします。 |
Windows Advanced Rasterizer (WARP) |
Direct3D 11 を通じてこの SDK で使用でき、最終的には Direct3D 10.1 でも使用できる WARP は、Direct3D 10.1 に完全に準拠した高速マルチコア スケーリング ラスタライザーです。 このテクノロジの利用は、デバイスの作成で D3D_DRIVER_TYPE_WARP フラグを渡すのと同じくらい簡単です。 |
Direct3D 9 ハードウェアの Direct3D 10 および Direct3D 11 (D3D10 レベル 9) |
Direct3D 11 を通じてこの SDK で使用でき、最終的には Direct3D 10.1 を通じて、Direct3D API はほとんどの Direct3D 9 ハードウェアと Direct3D 10、Direct3D 10.1、Direct3D 11 ハードウェアをターゲットにすることができます。 これは、機能に応じてハードウェアを 6 つのカテゴリ (9_1、9_2、9_3、10_0、10_1、11_0) にグループ化する機能レベル メカニズムを提供することで実現されます。 カードは、そのレベルに完全に準拠している場合にのみ機能レベルを満たし、各レベルはその下のレベルの厳密なスーパーセットです。 予期しないパフォーマンスの崖が見つからないよう、機能は最小限にエミュレートされます。 したがって、ジオメトリ シェーダーなどの機能は、Direct3D 9 レベルのターゲットでは使用できません。 |
ランタイム バイナリ |
Windows 7 および Windows Vista SP1 で使用できる Direct3D 11 技術プレビューで提供されるすべてのランタイム バイナリは、SDK と共にインストールされ、"ベータ" コンポーネント (つまり、D3D11_beta.DLL) としてラベル付けされます。 ベータ版のラベルが付いたコンポーネントはすべて、時限爆弾を受けます。 これらの新しいコンポーネントを評価するプロジェクトを作成するには、同等のベータラベルのインポート ライブラリ (つまり、D3D11_beta.lib) にリンクする必要があります。 Windows 7 の PDC コピーがある場合、ビルドを使用して Windows SDK で提供されるヘッダー、libs、pdb は、Windows 7 で提供される Direct3D 11 コンポーネントを使用した開発に適しています。 この SDK のヘッダー、libs、pdbs の使用は、ここで提供されるベータ 版コンポーネントに予約してください。 |
D3DX11 |
D3DX11 は現在、Direct3D 11 リソースのテクスチャ読み込み、シェーダーコンパイル、データ読み込み、ワーカー スレッド関数をサポートしています。 将来的には、このコンポーネントにより、D3DX10 で使用できるテクノロジの多くが提供される予定です。 シェーダーコンパイル機能は、次に説明する Direct3D コンパイラ コンポーネントを通じて直接提供されます。 |
HLSL および Direct3D コンパイラ |
HLSL コンパイラには、Direct3D 11 で使用できる新しいテクノロジをサポートするためのいくつかの新機能があります。 これには、インターフェイスとクラスを使用したオブジェクト指向プログラミング、リソース読み込みの直接インデックス作成構文、および特定の変数で実行されるすべての操作が厳密な浮動小数点規則に従うようにするための "正確な" キーワード (keyword)が含まれます。 ほぼすべての新しい言語機能には、既存のシェーダー ターゲットに対して有効な機能があります。 すべての Direct3D 9、Direct3D 10、Direct3D 10.1、および Direct3D 11 シェーダーをサポートするだけでなく、HLSL コンパイラでは、Direct3D 10 レベル 9 ターゲットのシェーダーを記述するために必要な特別なターゲットもサポートされています。 D3D コンパイラは、D3DX10 および D3DX11 から D3DCompiler.H および D3DCompiler.lib を介して直接アクセスできるようになりました。 これらの新しいファイルでは、ランタイム コンパイルを実行するためにアプリケーションが D3DX にリンクする必要はありません。また、D3DX 機能のみが必要な場合は、アプリケーションにコンパイラを含める必要はありません。 |
D3D11 リファレンス ラスタライザー |
リファレンス ラスタライザーは、ハードウェアではまだ使用できない Direct3D 11 機能を評価するためのゴールド標準のラスター化実装を提供します。 参照ラスタライザーは、ラスタライズ標準に対する特定のハードウェア実装の精度を検証する方法としても提供されます。 参照ラスタライザーは、パフォーマンスではなく正確性を考慮して設計されています。 参照デバイスを作成するには、デバイスの作成時に D3D_DRIVER_TYPE_REFERENCE フラグを渡します。 |
D3D11 SDK レイヤー |
Direct3D11 SDK レイヤーは、開発中に Direct3D 11 ランタイムの操作を追跡するためのメカニズムを提供します。 現在、これは便利なデバッグ情報を提供するために使用されます。これには、不適切な使用に関するエラーだけでなく、ランタイムのベスト プラクティスの使用を推奨する警告も含まれており、多くの場合、デバッグに役立つ詳細な情報が提供されます。 D3D11 SDK レイヤーからのデバッグ出力は開発時に常にオンにし、アプリケーションが実行中にデバッグ出力を生成しないと、プロファイリングのために PIX for Windows でリリースまたは使用されることを強くお勧めします。 デバッグ レイヤーの有効化は、デバイス作成時に D3D11_CREATE_DEVICE_DEBUG フラグを渡すのと同じくらい簡単です。 開発者は、デバッグ ビルドでレイヤーを使用することを強くお勧めします。 レイヤーは、プロファイル ビルドまたはリリース ビルドで使用することはお勧めしません。 |
新しいサンプル |
このリリースには、4 つの新しいサンプルがあります。
|