ps_1_Xの修飾子

命令修飾子は、宛先レジスタに書き込まれる前の命令の結果に影響します。 たとえば、結果を 2 の係数で乗算または除算したり、0 から 1 の間で結果をクランプしたりするには、それらを使用します。 命令修飾子は、命令の実行後、出力先レジスタに結果を書き込む前に適用されます。

修飾子の一覧を次に示します。

修飾子 説明 構文 バージョン 1_1 バージョン 1_2 バージョン 1_3 バージョン 1_4
_x2 2 を掛ける instruction_x2 X X X X
_x4 4 を乗算する instruction_x4 X X X X
_x8 8 を乗算する instruction_x8 X
_d2 2 で除算 instruction_d2 X X X X
_d4 4 で除算 instruction_d4 X
_d8 8 で除算 instruction_d8 X
_土 飽和 (0 および 1 からのクランプ) instruction_sat X X X X

 

  • 乗算修飾子は、読み取られた後、レジスタ データに 2 の累乗を乗算します。 これは左シフトと同じです。
  • 除算修飾子は、読み取り後にレジスタ データを 2 の累乗で除算します。 これはシフト右と同じです。
  • 飽和修飾子は、レジスタ値の範囲を 0 から 1 にクランプします。

命令修飾子は、算術命令で使用できます。 テクスチャ アドレス命令では使用できません。

乗算修飾子

次の使用例は、コピー先レジスタ (dest) をソース オペランド (src0 と src1) の 2 色の合計で読み込み、結果に 2 を乗算します。

add_x2 dest, src0, src1

この例では、2 つの命令修飾子を結合します。 最初に、ソース オペランド (src0 と src1) に 2 つの色が追加されます。 その後、結果に 2 を乗算し、コンポーネントごとに 0.0 から 1.0 の間でクランプします。 結果は宛先レジスタに保存されます。

add_x2_sat dest, src0, src1

除算修飾子

次の使用例は、コピー先レジスタ (dest) をソース オペランド (src0 と src1) の 2 色の合計で読み込み、結果を 2 で除算します。

add_d2 dest, src0, src1

飽和修飾子

算術命令の場合、飽和修飾子は、この命令の結果をコンポーネントごとに 0.0 から 1.0 の範囲にクランプします。 次の例は、この命令修飾子を使用する方法を示しています。

dp3_sat r0, t0_bx2, v0_bx2    ; t0 is bump, v0 is light direction

この操作は、乗算または除算命令修飾子の後に発生します。 _satは、ドット製品の結果をクランプするために最もよく使用されます。 ただし、フレーム バッファーが常に 0 ~ 1 の範囲にあるマルチパス メソッドと、各ステージで彩度が定義されている DirectX 6 および 7.0 マルチテクスチャ構文の一貫したエミュレーションも可能になります。

次の使用例は、ソース オペランド (src0 と src1) の 2 つの色の合計を含む宛先レジスタ (dest) を読み込み、結果をコンポーネントごとに 0.0 ~ 1.0 の範囲に固定します。

add_sat dest, src0, src1

この例では、2 つの命令修飾子を結合します。 最初に、ソース オペランド (src0 と src1) に 2 つの色が追加されます。 結果は 2 で乗算され、コンポーネントごとに 0.0 から 1.0 の間でクランプされます。 結果は宛先レジスタに保存されます。

add_x2_sat dest, src0, src1

ピクセル シェーダーの手順