取样器 (Direct3D 9 asm-ps)

采样器是像素着色器的输入伪寄存器,用于标识采样阶段。 有 16 个像素着色器采样阶段寄存器:s0 到 s15。 因此,在单个着色器通道中最多可以读取 16 个纹理表面。 使用采样器寄存器的说明为 texld 和 texldp。

在与 dcl_samplerType (sm2、 sm3 - ps asm) 指令一起使用之前,必须声明取样器。

像素着色器版本 1_1 1_2 1_3 1_4 2_0 2_sw 2_x 3_0 3_sw
取样器 x x x x x

 

采样器是伪寄存器,因为你无法直接读取或写入它们。

采样单元对应于纹理采样阶段,封装 SetSamplerState 提供的特定于采样的状态。 每个采样器唯一标识单个纹理表面,该图面使用 SetTexture 设置为相应的采样器。 但是,可以在多个采样器中设置相同的纹理图面。

在绘制时,纹理不能同时设置为呈现目标和阶段的纹理。

采样器可能显示为纹理加载指令中的唯一参数: texldl - ps

在 ps_3_0,如果使用采样器,则需要使用 dcl_samplerType (sm2、 sm3 - ps asm) 指令在 着色器程序的开头声明它。

对尺寸大于纹理坐标中尺寸的纹理进行采样是非法的。 采样尺寸小于纹理坐标中存在的纹理将忽略额外的纹理坐标。

寄存器