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