Share via


gather4 (sm5 - asm)

バイリニア フィルタリング操作で使用される 4 つのテクセルを収集し、それらを 1 つのレジスタにパックします。 この命令は、配列を含む 2D または CubeMap テクスチャでのみ機能します。 サンプラーのアドレス指定モードのみが使用され、ミップ ピラミッドの最上位レベルが使用されます。

gather4[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], srcSampler[.select_component]
項目 説明
Dest
[入力]操作の結果のアドレス。
srcAddress
[入力]テクスチャ座標のセット。
srcResource
[入力]テクスチャ レジスタ。
srcSampler
[入力]サンプラー レジスタ。

解説

この命令は サンプル 命令と同様に動作しますが、フィルター処理されたサンプルは生成されません。 フィルター処理に寄与する 4 つのサンプルは、クエリ対象の場所の左下にあるサンプルから始めて、反時計回りの順序で xyzw に配置されます。 これは、(u,v) テクスチャ座標デルタを使用したポイント サンプリングと同じで、(-,+)、(+、+)、(+、-)(-,-)、デルタの大きさは常にテクセルの半分になります。

CubeMap テクスチャの場合、バイリニア フットプリントがエッジにまたがる場合、隣接する面のテクセルが使用されます。 角は サンプル 命令と同じルールを使用します。つまり、不明な角は、3 つの衝突する顔の角の平均と見なされます。

gather4 には、形式リストで表されるテクスチャ形式の制限があります。

srcResource の swizzle を使用すると、返された値を、宛先に書き込む前に任意にスウィズルできます。

srcSampler の.select_componentでは、4 つのテクセルを読み取るソース テクスチャ (r/g/b/a) のコンポーネントを選択します。

float32 コンポーネントを含む形式の場合、フェッチされる値が正規化、非正規化、+-0、または +-INF である場合は、変更されていないシェーダーに返されます。 NaN は NaN として返されますが、NaN の正確なビット表現は変更される可能性があります。 TextureCubes の場合、不足している 4 番目のテクセルの合成はコーナーで行われる必要があるため、合成されたテクセルに対して変更されていないビットを返しても適用されず、デノルムがフラッシュされる可能性があります。

ハードウェア実装の場合、テクセルでサンプルを直接検出し、重み 0 のテクセルの読み取りをスキップする従来のバイリニア フィルター処理の最適化は、この命令では利用できません。 gather4 は 、要求されたすべてのテクセルを常に返します。

この命令は、次のシェーダー ステージに適用されます。

Vertex Hull Domain ジオメトリ ピクセル Compute
X X X X X X

最小シェーダー モデル

この命令は、次のシェーダー モデルでサポートされています。

シェーダー モデル サポートされています
シェーダー モデル 5 はい
シェーダー モデル 4.1 no
シェーダー モデル 4 no
シェーダー モデル 3 (DirectX HLSL) no
シェーダー モデル 2 (DirectX HLSL) no
シェーダー モデル 1 (DirectX HLSL) no

シェーダー モデル 5 アセンブリ (DirectX HLSL)