Microsoft DirectX 8.0 (C++) |
Direct3DX ピクセル シェーダ アセンブラは、シフト/スケーリング修正子フラグ、および生成される出力結果に影響する彩度修正子フラグをサポートしている。命令修飾子は、次の順序で命令処理と結び付く。
シフト/スケーリング修飾子を使うと、結果の大きさをある範囲内で変更できる。
名前 | 修飾子 |
---|---|
_x2 | 2 で乗算した結果 |
_x4 | 4 で乗算した結果 |
_d2 | 2 で除算した結果 |
さらに、色およびアルファ ブレンディング命令と、テクスチャ アドレッシング命令の両方で使用するために、彩度修飾子 (_sat) が用意されている。
色およびアルファ ブレンディング命令の場合、彩度修飾子は、この命令の結果を各成分について 0.0 〜 1.0 の範囲にクランプする。次の例は、この修飾子の使い方を示している。
dp3_sat r0, t0_bx2, v0_bx2 ; t0 はバンブ、v0 はライト方向
この処理は、スケーリング命令修飾子の後で実行される。これは、通常、内積の結果をクランプするために使用される。ただし、フレーム バッファが常に 0 〜 1 の範囲にあるマルチパス メソッドと、彩度が各ステージで行われるように定義されている Microsoft® DirectX 6.0 および 7.0 のマルチテクスチャ構文で、一貫性のあるエミュレーションを実行できる。
テクスチャ アドレッシング命令の場合、彩度修飾子を処理に追加し、終了時の処理の結果を 0.0 〜 1.0 の色の範囲にクランプするように指定できる。これは、一般的に、ライティング処理で使用する必要がある。次の例は、この修飾子の使い方を示している。
ps.1.0 ; DirectX8 バージョン tex t0 ; テクスチャ カラーを読み込む dp3_sat t1, t0_bx2, v0_bx2 ; テクスチャ座標とクランプで内積を計算
次の add 命令は、ソース オペランド (s0 と s1) の 2 つの色を加えたものをデスティネーション レジスタ (d) にロードし、結果に 2 を掛けている。
add_x2 d, s0, s1
次の add 命令は、ソース オペランド (s0 と s1) の 2 つの色を加えたものをデスティネーション レジスタ (d) にロードし、結果を各成分について 0.0 〜 1.0 の範囲にクランプしている。
add_sat d, s0, s1
次の add 命令は、ソース オペランド (s0 と s1) の 2 つの色を加えたものをデスティネーション レジスタ (d) にロードし、結果を 2 倍してから、各成分について結果を 0.0 〜 1.0 の範囲にクランプしている。
add_2x_sat d, s0, s1