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 の累乗で除算します。 これはシフト右と同じです。
- 飽和修飾子は、レジスタ値の範囲をゼロから 1 にクランプします。
命令修飾子は、算術命令で使用できます。 テクスチャ アドレス命令では使用できません。
乗算修飾子
次の使用例は、ソース オペランド (src0 と src1) の 2 つの色の合計を持つ宛先レジスタ (dest) を読み込み、結果に 2 を乗算します。
add_x2 dest, src0, src1
この例では、2 つの命令修飾子を結合します。 最初に、ソース オペランド (src0 と src1) に 2 つの色が追加されます。 その後、結果に 2 を乗算し、コンポーネントごとに 0.0 から 1.0 の間でクランプします。 結果は宛先レジスタに保存されます。
add_x2_sat dest, src0, src1
除算修飾子
次の使用例は、ソース オペランド (src0 と src1) の 2 つの色の合計を持つ宛先レジスタ (dest) を読み込み、結果を 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
関連トピック
-
ピクセル シェーダー命令 を する