2 次元の多サンプル テクスチャから個々のサンプルを読み取ります。
ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
アイテム | 説明 |
---|---|
dest |
[in]操作の結果のアドレス。 |
srcAddress |
[in]サンプルを実行するために必要なテクスチャ座標。 |
srcResource |
[in]フェッチ元のテクスチャまたはバッファーを識別するために宣言されている必要があるテクスチャ レジスタ (t#) |
sampleIndex |
[in] srcResource (スカラー オペランド) から読み取るサンプルを識別します。 |
注釈
この命令は、 サンプル 命令に代わる簡略化された方法です。 指定された 整数 srcAddress と sampleIndex を使用して、フィルター処理 (ポイント サンプリングなど) を行わずに、指定されたテクスチャからデータをフェッチします。
srcAddress は、符号なし整数の形式でサンプルを実行するために必要なテクスチャ座標のセットを提供します。 srcAddress が範囲外の場合[0...(ディメンション -1)]で #texels、ld2dms は常にリソースの形式で存在するすべてのコンポーネントで 0 を返し、不足しているコンポーネントの既定値 (0,0,0,1.0f/0x00000001) を返します。
sampleIndex はリテラルである必要はありません。 マルチサンプル数はテクスチャ リソースで指定する必要はありません。深度ビューまたはステンシル ビューで動作します。
範囲外のアドレス動作をより柔軟に制御したいアプリケーションでは、 代わりにサンプル 命令を使用する必要があります。これは、サンプラー状態として定義されたアドレス ラップ/ミラー/クランプ/境界線の動作を受け入れるのでです。
Texture2D の場合、srcAddress.b (post-swizzle) は無視されます。 値が使用可能な配列インデックス [0...(配列サイズ 1)]、 ld2dms は常にリソースの形式で存在するすべてのコンポーネントで 0 を返し、不足しているコンポーネントの既定値 (0,0,0,1.0f/0x00000001) を返します。
Texture2D 配列の場合、 srcAddress.b (post-swizzle) は配列インデックスを提供します。 それ以外の場合は、Texture2D と同じ動作になります。
srcAddress.a (post-swizzle) は常に無視されます。 HLSL コンパイラは、そこに何も出力しません。
srcResource はテクスチャ レジスタ (t#) であり、どのテクスチャからフェッチするかを識別するために宣言されている必要があります (22.3.11)。
何もバインドされていない t# からフェッチすると、すべてのコンポーネントに対して 0 が返されます。
アドレス オフセット
省略可能な [_aoffimmi(u,v,w)] サフィックス (即時整数によるアドレス オフセット) は、 ld2dms のテクスチャ座標が、指定された即時テクセル空間整数定数値のセットによってオフセットされることを示します。 リテラル値は、整数範囲 [-8,7] を持つ 4 ビット 2 の補数のセットです。
オフセットはテクセル空間でテクスチャ座標に追加されます。
アドレス オフセットは、Texture1D/2D 配列の配列軸に沿って適用されません。
Texture1D では、_aoffimmi v、w コンポーネントは無視されます。
Texture2D の 場合、_aoffimmi w コンポーネントは無視されます。
ld2dms のテクスチャ座標は符号なし整数であるため、オフセットによってアドレスが 0 未満になった場合、アドレスは大きなアドレスに折り返され、結果として境界外アクセスが発生します。ld のように、リソースの形式に存在するすべてのコンポーネントで 0 が返され、不足しているコンポーネントの既定値 (0,0,0,1.0f/0x00000001) が返されます。
サンプル番号
ld2dms は、任意のリソースで使用できます。 ld2dms は、追加の (0 ベースの) sampleIndex オペランドを使用してリソースから読み取るサンプルを識別することで、2D マルチサンプル リソースを除く ld と同じように動作します。
リソース内のサンプルの数を超える sampleIndex を 指定した結果は未定義ですが、デバイス コンテキストのアドレス空間外のデータを返すことはできません。
戻り値の型コントロール
ld2dms によって宛先レジスタに返されるデータ形式は、サンプル命令の説明と同じ方法で決定されます。 これは 、srcResource パラメーター (t#) にバインドされた形式に基づいています。
サンプル命令と同様に、ld2dms の戻り値は 4 ベクトルであり、形式固有の既定値は形式に含まれていないコンポーネントに対して指定されます。 srcResource のスウィズルは、テクスチャ ロードから返される 4 コンポーネントの結果をスウィズルする方法を決定します。その後、dest の .mask によって、更新されるデスト内のコンポーネントが決定されます。
32 ビット浮動小数点値が ld2dms によって 32 ビット レジスタに読み取られた場合、ビットは変更されません。つまり、非正規化値は非正規化のままです。 これは サンプル 命令とは異なります。
その他の詳細
この命令に関連付けられたフィルター処理がないため、LOD バイアスなどの概念は適用されません。 したがって、 サンプラーの s# パラメーターはありません。
制約
- srcResource は、TextureCube、Texture1D、Texture1DArray ではなく、t# レジスタである必要があります。 srcResource を ConstantBuffer にすることはできません。これは t# レジスタにバインドできません。
- srcResource での相対アドレス指定は許可されていません。
- srcAddress と sampleIndex は、temp (r#/x#)、定数 (cb#)、または入力 (v#) レジスタである必要があります。
- dest は、temp (r#/x#) または出力 (o*#) レジスタである必要があります。
この命令は、次のシェーダー ステージに適用されます。
頂点シェーダー | ジオメトリ シェーダー | ピクセル シェーダー |
---|---|---|
x | x | x |
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | はい |
シェーダー モデル 4 | いいえ |
シェーダー モデル 3 (DirectX HLSL) | いいえ |
シェーダー モデル 2 (DirectX HLSL) | いいえ |
シェーダー モデル 1 (DirectX HLSL) | いいえ |