リソースへのアクセス
リソースにアクセスするためのいくつかの新しい方法があります。
- バイト オフセットによるアクセス
- インデックスによるアクセス
- ミップ メンバーによるアクセス
バイト オフセットによるアクセス
バイト オフセットを使用して、次の 2 つの新しいバッファー タイプにアクセスできます。
- ByteAddressBuffer は、読み取り専用バッファーです。リソース変数を使用することによってのみアクセスできます。
- RWByteAddressBuffer は、読み取りバッファーまたは書き込みバッファーです。
インデックスによるアクセス
リソース タイプは、インデックスを使用して、リソース内の特定の場所を参照できます。次に例を示します。
Texture2D<float4> myTexture; float4 myVar = myTexture[pos];
この例では、myVar はリソース変数と呼ばれます。つまり、リソースを参照する変数です。
次のリソース変数を使用して、テクセルをインデックス付けできます。
float4 myVar = myTexture[pos];
Direct3D 11 では、すべてのリソース タイプをインデックス付けできます。たとえば、2D テクスチャーの場合、次のようになります。
Texture2D<float4> myTexture;
ミップ メンバーによるアクセス
シェーダー モデル 5 では、すべてのテクスチャー オブジェクトにミップ メンバーがあります。これを使用してミップマップ レベルを指定できます。次の例は、2D テクスチャーのミップマップ レベル 2 の (2,3) に格納されたカラーを読み取ります。
float4 myColor = myTexture.mips[0][float2(x,y)];