resinfo (sm4 - asm)
指定された入力リソースのディメンションに対してクエリを実行します。
resinfo[_uint|_rcpFloat] dest[.mask], srcMipLevel.select_component, srcResource[.swizzle] |
---|
Item | 説明 |
---|---|
Dest |
[入力]操作の結果のアドレス。 |
srcMipLevel |
[入力]ミップ レベル。 |
srcResource |
[入力]ディメンションのクエリ対象となる t# または u# 入力テクスチャ。 |
注釈
srcMipLevel は符号なし整数スカラーとして読み取られます。したがって、ソース レジスタがスカラーイミディエイト値でない場合は、1 つのコンポーネント セレクターが必要です。
dest は、書き込みマスクによって選択された [幅、高さ、深さ、または配列サイズ、total-mip-count] を受け取ります。
返される幅、高さ、および深さの値は 、srcMipLevel パラメーターによって選択された mip レベルの値であり、テクセル のデータ サイズに関係なく、テクセルの数です。 マルチサンプル リソース (texture2D[Array]MS#) の場合、幅と高さは、サンプルではなくテクセルでも返されます。
dest.w で返される mip カウントの合計は、srcMipLevel パラメーターの影響を受けません。
UAV (u#) の場合、ミップ レベルの数は常に 1 です。
この命令のすべての側面は、基になる基本リソースではなく、t#/u# でバインドされたリソース ビューの特性に基づいています。
_uint修飾子を使用しない限り、戻り値はすべて浮動小数点です。この場合、戻り値はすべて整数です。 _rcpFloat修飾子を使用すると、返されるすべての値が浮動小数点になり、幅、高さ、深さが逆数 (1.0f/width、1.0f/height、1.0f/depth) として返されます(width/height/depth が範囲外の srcMipLevel 動作から 0 の場合は INF を含む)。 _rcpFloat修飾子は、返される幅、高さ、深さの値にのみ適用され、0 に設定され、したがって返されない値には適用されず、配列サイズの戻り値にも適用されません。
srcResource の swizzle を使用すると、返された値を、宛先に書き込む前に任意にスウィズルできます。
srcResource が Texture1D の場合、width は dest.x で返され、dest.yz は 0 に設定されます。
srcResource が Texture1DArray の場合、width は dest.x で返され、配列サイズは dest.y で返され、dest.z は 0 に設定されます。
srcResource が Texture2D の場合、幅と高さは dest.xy で返され、dest.z は 0 に設定されます。
srcResource が Texture2DArray の場合、幅と高さは dest.xy で返され、配列サイズは dest.z で返されます。
srcResource が Texture3D の場合は、幅、高さ、深さが dest.xyz で返されます。
srcResource が TextureCube の場合、個々のキューブ面の寸法の幅と高さは dest.xy で返され、dest.z は 0 に設定されます。
srcResource が TextureCubeArray の場合、個々のキューブ面の寸法の幅と高さは dest.xy で返されます。dest.z は未定義の値に設定されます。
srcResource でリソースごとのミップ クランプが指定されている場合、resinfo は、クランプに関係なく、ビュー内のミップマップの合計数を常に返します。 ただし、指定されたミップレベルの寸法が resinfo によって要求され、ミップレベルがクランプオフされている場合 (2.2 のクランプは、mips 0 と 1 がクランプオフされていることを意味します)、返される寸法は未定義です。 一部の実装では、miplevel が範囲外の場合に resinfo に指定された範囲外の動作が返されます。 他の実装では、クランプされていないかのようにミップの次元が返されます。
制限
- srcResource は、バッファーではなく Texture* である t# または u# レジスタである必要があります。
- srcResource の相対アドレス指定は許可されていません。
- srcMipLevel は、スカラー イミディエイトでない場合は、1 つのコンポーネント セレクターを使用する必要があります。
- バインドされていない t# または u# からフェッチすると、幅、高さ、深さ、配列サイズ、および合計 mip-count に対して 0 が返されます。 この場合も _rcpFloat 修飾子が使用されるため、該当する戻り値の INF が返されます。
- srcMipLevel がリソース内の miplevel の使用可能な数の範囲外にある場合、サイズの戻り値 (dest.xyz) の動作は、バインドされていない t# または u# リソースの動作と同じです。 この場合も、合計 mip カウントは dest.w で返されます。
この命令は、次のシェーダー ステージに適用されます。
頂点シェーダー | ジオメトリ シェーダー | ピクセル シェーダー |
---|---|---|
x | x | x |
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | はい |
シェーダー モデル 4 | はい |
シェーダー モデル 3 (DirectX HLSL) | no |
シェーダー モデル 2 (DirectX HLSL) | no |
シェーダー モデル 1 (DirectX HLSL) | no |