gather4 (sm4.1 - asm)

收集将在双线性筛选操作中使用的四个纹素,并将其打包到单个寄存器中。

gather4[_aoffimmi (u,v) ] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], srcSampler.r
说明
dest
[in]操作结果的地址。
srcAddress
[in]包含纹理坐标。
srcResource
[in]资源寄存器。
重排允许在将返回的值写入 dest 之前任意重排。
srcSampler
[in]采样器寄存器。
此参数必须具有 .r (红色) 重排,这指示将 R 通道的值复制到 dest

备注

此操作仅适用于单通道 2D 或 CubeMap 纹理。 对于 2D 纹理,仅使用采样器的寻址模式,并使用任何 mip 棱锥图的顶层。

此指令的行为与 示例 指令类似,但不会生成筛选的样本。 有助于筛选的四个样本按逆时针顺序放置在 xyzw 中,从样本开始到查询位置的左下角。 这与以下位置 (u,v) 纹理坐标增量的点采样相同: (-、+) 、 (+、+) 、 (+、-) 、 (-,-) ,其中增量的幅度始终为纹素的半。

对于 CubeMap 纹理,当双线性足迹跨越相邻面的边缘纹素时,使用。 角使用与 示例 指令相同的规则;即不为人知道的角被视为三个指角的平均值。

适用于 示例 指令的纹理格式限制也适用于 gather4 指令。

对于硬件实现,传统双线性筛选中的优化(直接检测纹素上的样本并跳过读取权重为 0 的纹素)无法与 gather4 一起使用。 gather4 始终返回所有请求的纹素。

此指令适用于以下着色器阶段:

顶点着色器 几何着色器 像素着色器
x x x

最小着色器模型

以下着色器模型中支持此函数。

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

着色器模型 4 程序集 (DirectX HLSL)