Sampler (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) 指令在着色器程序的开头声明它。

采样维度高于纹理坐标中存在的纹理是非法的。 采样尺寸低于纹理坐标的纹理将忽略额外的纹理坐标。

寄存器