Sampler (Direct3D 9 asm-ps)

A sampler is a input pseudo-register for a pixel shader, which is used to identify the sampling stage. There are 16 pixel shader sampling stage registers: s0 to s15. Therefore, up to 16 texture surfaces can be read in a single shader pass. The instructions that use a sampler register are texld and texldp.

Sampler must be declared before use with the dcl_samplerType (sm2, sm3 - ps asm) instruction.

Pixel shader versions 1_1 1_2 1_3 1_4 2_0 2_sw 2_x 3_0 3_sw
Sampler x x x x x

 

Samplers are pseudo registers because you cannot directly read or write to them.

A sampling unit corresponds to the texture sampling stage, encapsulating the sampling-specific state provided by SetSamplerState. Each sampler uniquely identifies a single texture surface, which is set to the corresponding sampler using the SetTexture. However, the same texture surface can be set at multiple samplers.

At draw time, a texture cannot be simultaneously set as a render target and a texture at a stage.

A sampler might appear as the only argument in the texture load instruction: texldl - ps.

In ps_3_0, if a sampler is used, it needs to be declared at the beginning of the shader program using the dcl_samplerType (sm2, sm3 - ps asm) instruction.

Sampling a texture with a higher dimension than is present in the texture coordinates is illegal. Sampling a texture with a lower dimension than is present in the texture coordinates will ignore the extra texture coordinates.

Registers