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|
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.