リソース

リソースは、Direct3D パイプラインからアクセスできるメモリ内の領域です。 パイプラインでメモリに効率的にアクセスするには、パイプラインに渡すデータ (入力ジオメトリ、シェーダー リソース、テクスチャなど) をリソースに格納する必要があります。 すべての Direct3D リソースの派生元となるリソースは 2 種類あります。バッファーとテクスチャです。 各パイプライン ステージでは最大 128 個のリソースをアクティブにできます。

通常、アプリケーションごとに多数のリソースが作成されます。 リソースの例として、頂点バッファー、インデックス バッファー、定数バッファー、テクスチャ、シェーダー リソースなどがあります。 リソースの使用方法を決めるオプションはいくつか存在します。 厳密に型指定されたリソースを作成するか、型指定のないリソースを作成することができます。また、リソースで読み取りアクセスと書き込みアクセスの両方を可能にするかどうかも制御できます。さらに、CPU のみ、GPU のみ、またはその両方からリソースにアクセスできるようにすることも可能です。 当然ながら、速度と機能はトレードオフの関係にあります。つまり、多くの機能をリソースに許可するほど、予想されるパフォーマンスが低下します。

アプリケーションでは多数のテクスチャを使用することが多いので、Direct3D にはテクスチャ管理を簡略化するテクスチャ配列という概念も用意されています。 テクスチャ配列には (型とサイズがすべて同じである) 1 つ以上のテクスチャが格納されており、アプリケーション内から、またはシェーダーでインデックスを作成できます。 テクスチャ配列により、複数のインデックスを持つ 1 つのインターフェイスを使用して多数のテクスチャにアクセスすることができます。 さまざまなテクスチャの種類を管理するために、テクスチャ配列は必要なだけ作成可能です。

アプリケーションで使用するリソースを作成したら、それらを使用するパイプライン ステージに各リソースを接続またはバインドします。 これは、リソースへのポインターを受け取るバインド API を呼び出すことで実行します。 複数のパイプライン ステージで同じリソースにアクセスしなければならない場合があるため、Direct3D にはリソース ビューという概念が用意されています。 ビューは、リソースのうち、アクセス可能な部分を識別します。 m 個のビューまたは 1 つのリソースを作成して、n 個のパイプライン ステージにバインドすることができます。この際、共有リソースのバインド規則に従うことが前提となります (従わなければコンパイル時にランタイムでエラーが発生します)。

リソース ビューは、リソース (テクスチャやバッファーなど) にアクセスするための一般的なモデルです。 ビューを使用すると、アクセスするデータやデータへのアクセス方法をランタイムに対して指示できます。そのため、リソース ビューを使うことで、型指定なしのリソースを作成できるようになります。 つまり、コンパイル時に特定のサイズのリソースを作成し、その後、リソースがパイプラインにバインドされるときにリソース内でデータ型を宣言できます。 ビューは、リソースを使用するための多数の機能を公開します。たとえば、シェーダーで深度/ステンシル サーフェスを読み返して、1 つのパスで動的なキューブマップを生成し、ボリュームの複数のスライスに同時にレンダリングすることができます。

このセクションの内容

トピック 説明

リソースの種類

リソースの種類によって、レイアウト (またはメモリ使用量) はそれぞれ異なります。 Direct3D パイプラインで使用されるリソースはすべて、2 つの基本的なリソースの種類であるバッファーテクスチャから派生したものです。 バッファーは未加工データ (要素) のコレクションで、テクスチャはテクセル (テクスチャ要素) のコレクションです。

リソースの選択

リソースは、3D パイプラインで使用されるデータのコレクションです。 リソースを作成してその動作を定義することが、アプリケーションをプログラミングするための第一歩になります。 このガイドでは、アプリケーションで必要なリソースの選択に関する基本的なトピックについて説明します。

リソース データのコピーとアクセス

使用法フラグは、アプリケーションがリソース データをどのように使用するかを示し、リソースを可能な限りメモリのパフォーマンスの高い領域に配置します。 リソース データはリソース間でコピーされ、CPU または GPU がパフォーマンスに影響を与えることなくリソースにアクセスできるようにします。

テクスチャ ビュー

Direct3D では、ビューを使ってテクスチャ リソースにアクセスします。ビューは、メモリ内のリソースをハードウェアで解釈するためのメカニズムです。 ビューを使うと、アプリケーションで要求される表現で、特定のパイプライン ステージから必要なサブリソースだけにアクセスできるようになります。

 

関連トピック

座標系

Direct3D グラフィックスの学習ガイド

浮動小数点の規則

データ型の変換