ルート署名

ルート署名は、グラフィックス パイプラインにバインドされるリソースの種類を定義します。

このセクションの内容

トピック 説明
ルート署名の概要
ルート署名はアプリで構成され、シェーダーが必要とするリソースにコマンド リストをリンクします。 グラフィックス コマンド リストには、グラフィックスと計算ルート署名の両方があります。 計算コマンド リストには、計算ルート署名が 1 つだけあります。 これらのルート署名は互いに独立しています。
ルート署名の使用
ルート署名は、記述子テーブル (そのレイアウトを含む)、ルート定数、ルート記述子の任意に整理されたコレクションの定義です。 各エントリのコストには上限があるため、アプリケーションでは、ルート署名に含める各種エントリの数との間でバランスを取ることができます。
ルート署名の作成
ルート署名は複雑なデータ構造であり、その中で構造体が入れ子になっています。 これらは、下のデータ構造の定義を使用してプログラムによって定義できます (メンバーの初期化に役立つメソッドを含む)。 または、ハイ レベル シェーディング言語 (HLSL) で作成することもできます。レイアウトがシェーダーと互換性があることをコンパイラが早い段階で検証するという利点があります。
ルート署名の制限
ルート署名は、主要な不動産であり、厳密な制限と考慮するコストがあります。
ルート署名で定数を直接使用する
アプリケーションでは、それぞれ 32 ビット値のセットとして、ルート署名でルート定数を定義できます。 これらは High Level Shading Language (HLSL) で定数バッファーとして扱われます。 履歴の理由上、定数バッファーは 4x32 ビット値のセットとして表示されていることに注意してください。
ルート署名で記述子を直接使用する
アプリケーションは、記述子をルート署名に直接配置して、記述子ヒープを経由する必要がないようにすることができます。 これらの記述子はルート署名で大きな領域を占めるため (ルート署名の制限に関するセクションを参照)、アプリケーションでは控えめに使用する必要があります。
ルート署名の例
次のセクションでは、空の状態から完全なフルまで、さまざまな複雑さのルートの署名を示します。
HLSL でのルート署名の指定
C++ コードでの指定の代替方法として、HLSL Shader Model 5.1 でルート署名を指定できます。
ルート署名バージョン 1.1
ルート署名バージョン 1.1 の目的は、記述子ヒープ内の記述子が変わらない場合またはデータ記述子のポイント先が変わらない場合、ドライバーを示すようにアプリケーションを有効にすることです。 これにより、ドライバーのオプションを最適化して、ドライバーがポイントする記述子またはメモリが一定の時間静的であることを認識できる場合があります。

ID3D12RootSignature

ID3D12RootSignatureDeserializer

リソース バインディング