サンプラー (Direct3D 9 asm-ps)
サンプラーは、ピクセル シェーダーの入力疑似レジスタであり、サンプリング ステージの識別に使われます。ピクセル シェーダーには、s0 ~ s15 の 16 個のサンプリング ステージ レジスタがあります。したがって、単一のシェーダー パスで最大 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 で指定されたサンプリング固有のステートをカプセル化します。各サンプラーは、1 つのテクスチャー サーフェスを一意に識別します。テクスチャー サーフェスは SetTexture を使用して、対応するサンプラーに設定します。ただし、同じテクスチャー サーフェスを複数のサンプラーで設定することが可能です。
描画時には、テクスチャーをレンダー ターゲットとステージのテクスチャーに同時に設定することはできません。
サンプラーは、次のテクスチャー ロード命令の唯一の引数として指定される場合があります。 texldl - ps.
ps_3_0 でサンプラーを使用する場合は、シェーダー プログラムの先頭に、dcl_samplerType (sm2, sm3 - ps asm) 命令を使用して宣言する必要があります。
テクスチャー座標内にあるものより高いディメンジョンでテクスチャーをサンプリングすることはできません。テクスチャー座標内にあるものより低いディメンジョンでテクスチャーをサンプリングすると、不要なテクスチャー座標は無視されます。