リソース バインディングResource Binding

バインディングは、リソース オブジェクトをグラフィックス パイプラインのシェーダーにリンクするプロセスです。Binding is the process of linking resource objects to the shaders of the graphics pipeline.

このセクションの内容In this section

トピックTopic 説明Description
リソース バインディングの概要Resource Binding Overview DirectX 12 のリソース バインディングの鍵となるのは、記述子記述子テーブル記述子ヒープ、およびルート署名の概念です。The key to resource binding in DirectX 12 are the concepts of a descriptor, descriptor tables, descriptor heaps, and a root signature.
バインディング モデルにおける Direct3D 11 との違いDifferences in the Binding Model from Direct3D 11 DirectX12 バインディングの背後にある主要な設計上の決定事項の 1 つとして、他の管理タスクからそれを分離します。One of the main design decisions behind DirectX12 binding is to separate it from other management tasks. これにより、特定の潜在的な危険を管理するいくつかの要件がアプリに課せられます。This places some requirements on the app to manage certain potential hazards.
記述子Descriptors 記述子は、D3D12 の単一リソースに対するバインドの主要な単位です。Descriptors are the primary unit of binding for a single resource in D3D12.
記述子ヒープDescriptor Heaps 記述子ヒープは、記述子の連続した割り当てのコレクションです。記述子ごとに 1 つの割り当てがあります。A descriptor heap is a collection of contiguous allocations of descriptors, one allocation for every descriptor.
記述子テーブルDescriptor Tables 記述子テーブルは、論理的には記述子の配列です。A descriptor table is logically an array of descriptors.
ルート署名Root Signatures ルート署名は、グラフィックス パイプラインにバインドされるリソースの種類を定義します。The root signature defines what types of resources are bound to the graphics pipeline.
機能のクエリCapability Querying アプリケーションで、ID3D12Device::CheckFeatureSupport を呼び出すことで、リソース バインディングやその他の多くの機能のサポート レベルを検出できます。Your application can discover the level of support for resource binding, and many other features, with a call to ID3D12Device::CheckFeatureSupport.
HLSL でのリソースバインドResource binding in HLSL このトピックでは、高レベルシェーダー言語 (HLSL)シェーダーモデル 5.1と Direct3D 12 を使用する特定の機能について説明します。This topic describes some specific features of using High Level Shader Language (HLSL) Shader Model 5.1 with Direct3D 12. すべての Direct3D 12 ハードウェアは Shader Model 5.1 をサポートしているため、このモデルのサポートはハードウェアの機能レベルに依存しません。All Direct3D 12 hardware supports Shader Model 5.1, so support for this model does not depend on what the hardware feature level is.
UMA の最適化: CPU アクセス可能なテクスチャおよび標準のスウィズルUMA Optimizations: CPU Accessible Textures and Standard Swizzle ユニバーサル メモリ アーキテクチャ (UMA) GPU には、特にモバイル デバイスに合わせて最適化する場合、個別の GPU を上回るいくつかの効率上の利点があります。Universal Memory Architecture (UMA) GPUs offer some efficiency advantages over discrete GPUs, especially when optimizing for mobile devices. GPU が UMA である場合にリソースに CPU アクセス権を付与すると、CPU と GPU の間で発生するコピーの量を減らすことができます。Giving resources CPU access when the GPU is UMA can reduce the amount of copying that occurs between CPU and GPU. UMA 設計においてアプリケーションからすべてのリソースに無条件に CPU アクセス権が付与されることはお勧めできませんが、適切なリソースに CPU アクセス権を付与すれば、効率向上の機会が得られます。While we don t recommend applications blindly give CPU access to all resources on UMA designs, there are opportunities to improve efficiencies by giving the right resources CPU access. 個別の GPU の場合とは異なり、CPU は GPU からアクセス可能なすべてのリソースを指すポインターを技術的に備えることができます。Unlike discrete GPUs, the CPU can technically have a pointer to all resources that the GPU can access.
順序指定されていないアクセス ビューの型を指定した読み込みTyped Unordered Access View Loads 順序指定されていないアクセス ビュー (UAV) の型を指定した読み込みは、シェーダーで特定の DXGI_FORMAT の UAV から読み取りを行うための機能です。Unordered Access View (UAV) Typed Load is the ability for a shader to read from a UAV with a specific DXGI_FORMAT.
ボリューム タイル リソースVolume Tiled Resources ボリューム (3D) テクスチャは、タイル リソースとして使用できます (タイルの解像度は 3 次元であることに注意します)。Volume (3D) textures can be used as tiled resources, noting that tile resolution is three-dimensional.
サブリソースSubresources リソースをサブリソースに分割する方法と、1 つのサブリソース、複数のサブリソース、またはサブリソースのスライスを参照する方法について説明します。Describes how a resource is divided into subresources, and how to reference a single, multiple or slice of subresources.