gather4 (sm5 - asm)
收集將用於雙向線性篩選作業的四個紋素,並將其封裝成單一暫存器。 此指令僅適用于 2D 或 CubeMap 紋理,包括陣列。 只會使用取樣器的定址模式,並使用任何 Mip 金字塔圖的最上層。
gather4[_aoffimmi (u,v) ] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], srcSampler[.select_component] |
---|
項目 | 描述 |
---|---|
dest |
[in]作業結果的位址。 |
srcAddress |
[in]一組紋理座標。 |
srcResource |
[in]紋理暫存器。 |
srcSampler |
[in]取樣器暫存器。 |
備註
此指令的行為就像 範例 指令,但不會產生篩選的樣本。 有助於篩選的四個樣本會以逆時針順序放入 xyzw 中,從查詢位置左下角的樣本開始。 這與 (u,v) 紋理座標差異位於下列位置的點取樣相同: (-,+) , (+,+) , (+,-) , (-,-) ,其中差異的大小一律為半紋素。
針對 CubeMap 紋理,當雙向線性使用量跨越邊緣時,會使用鄰近臉部的紋素。 角落使用與 範例 指令相同的規則;也就是說,未知的角落會被視為三個隱含臉部角落的平均值。
有一個紋理格式限制會套用至以格式清單表示的 gather4 。
srcResource上的 swizzle 可讓傳回的值在寫入目的地之前任意撥動。
srcSampler上的.select_component會選擇要從中讀取 4 個材質的來源紋理元件, (r/g/b/a) 。
針對具有 float32 元件的格式,如果擷取的值已正規化、反正規化、+-0 或 +-INF,則會傳回未變更的著色器。 NaN 會以 NaN 傳回,但 NaN 的確切位標記法可能會變更。 對於 TextureCubes,遺漏第 4 個紋素的某些合成必須在角落髮生,因此不會套用合成材質的傳回位,而且可以排清反數。
對於硬體實作,傳統雙向線性篩選中的優化會直接在紋素上偵測樣本,並略過讀取具有重量 0 的紋素,無法利用此指示。 gather4 一律會傳回所有要求的紋素。
本指示適用于下列著色器階段:
頂點 | 船體 | 網域 | 幾何形狀 | 像素 | 計算 |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小著色器模型
下列著色器模型支援此指示:
著色器模型 | 支援 |
---|---|
著色器模型 5 | 是 |
著色器模型 4.1 | 否 |
著色器模型 4 | 否 |
著色器模型 3 (DirectX HLSL) | 否 |
著色器模型 2 (DirectX HLSL) | 否 |
著色器模型 1 (DirectX HLSL) | 否 |