リソース バインド
バインディングは、リソース オブジェクトをグラフィックス パイプラインのシェーダーにリンクするプロセスです。
このセクションの内容
トピック | 説明 |
---|---|
リソース バインディングの概要 | DirectX 12 のリソース バインドの鍵となるのは、 記述子、 記述子テーブル、 記述子ヒープ、 ルート署名の概念です。 |
バインディング モデルにおける Direct3D 11 との違い | DirectX12 でのバインドに関する主な設計上の決定事項の 1 つは、それを他の管理タスクから分離することです。 これにより、特定の潜在的な危険を管理するいくつかの要件がアプリに課せられます。 |
記述子 | 記述子は、D3D12 の単一リソースに対するバインドの主要な単位です。 |
記述子ヒープ | 記述子ヒープは、記述子の連続した割り当てのコレクションです。記述子ごとに 1 つの割り当てがあります。 |
記述子テーブル | 記述子テーブルは、論理的には記述子の配列です。 |
ルート署名 | ルート署名は、グラフィックス パイプラインにバインドされるリソースの種類を定義します。 |
機能クエリ | アプリケーションは、 ID3D12Device::CheckFeatureSupport の呼び出しを使用して、リソース バインドやその他の多くの機能のサポート レベルを検出できます。 |
HLSL でのリソース バインディング | このトピックでは、高レベル シェーダー言語 (HLSL) シェーダー モデル 5.1 とDirect3D 12を使用する特定の機能について説明します。 すべての Direct3D 12 ハードウェアは Shader Model 5.1 をサポートしているため、このモデルのサポートはハードウェアの機能レベルに依存しません。 |
UMA の最適化: CPU アクセス可能なテクスチャと標準スウィズル | ユニバーサル メモリ アーキテクチャ (UMA) GPU は、効率の点で独立型 (ディスクリート) GPU よりも有利です。特にモバイル デバイスに合わせて最適化するときです。 GPU が UMA である場合にリソースを CPU アクセス可能にすると、CPU と GPU の間で発生するコピーの量を削減できます。 UMA 設計においてアプリケーションからすべてのリソースに無条件に CPU アクセス権が付与されることはお勧めできませんが、適切なリソースに CPU アクセス権を付与すれば、効率向上の機会が得られます。 ディスクリート GPU とは異なり、CPU は、GPU からアクセス可能なすべてのリソースへのポインターを持つことが技術的に可能です。 |
型指定された順序なしのアクセス ビューの読み込み | 順序なしアクセス ビュー (UAV) 型指定された読み込みは、シェーダーが特定の DXGI_FORMATを持つ UAV から読み取る機能です。 |
ボリュームのタイル表示されたリソース | ボリューム (3D) テクスチャは、タイル リソースとして使用できます (タイルの解像度は 3 次元であることに注意します)。 |
サブリソース | リソースをサブリソースに分割する方法と、1 つのサブリソース、複数のサブリソース、またはサブリソースのスライスを参照する方法について説明します。 |