レジスタ - ps_3_0
ピクセル シェーダーはレジスタを使用して、頂点データの取得、ピクセル データの出力、計算中の一時的な結果の保持、テクスチャー サンプリング ステージの識別を行います。レジスタにはさまざまな種類があり、それぞれが固有の機能を持っています。ここでは、ピクセル シェーダー バージョン 3_0 が実装する入出力レジスタについてのリファレンス情報について説明します。
新しいレジスタ
入力レジスタ
入力レジスタ (v#) は完全な浮動小数点型となり、テクスチャー座標レジスタ (t#) と統合されて単一のレジスタ タイプとなっています。シェーダーの上部にある dcl_semantics (sm3 - ps asm) は、特定の Input_Register に何が格納されるかを説明するために使用されます。ピクセルの型のセマンティクスは (頂点側と同様に)このモデルに導入されています。入力レジスタが (テクスチャー座標と同様に) カラーとして定義されているとき、クランプは実行されません。カラーとして定義されているレジスタの評価は、マルチサンプリング実行時のテクスチャー座標とは異なります。
面レジスタ
面レジスタ (vFace) はこのモデルの新しいレジスタです。これは、最終的にプリミティブ領域を含む浮動小数点型スカラー レジスタです。しかし、ps_3_0 では、このレジスタの符号のみが有効です。そこで、値がゼロ未満の場合 (符号ビットが負に設定されている場合)、プリミティブは背面 (負領域、反時計回り) になります。したがって、ps_3_0 では、このレジスタは 0 (> 0 または < 0) と比較する場合のみ有効です。ピクセル シェーダーの内部では、アプリケーションが使用するライティング技法について決定を下すことができます。2 面ライティングはこのようにして実現されます。このレジスタは宣言を必要とするため、宣言されていない使用法にはエラーのフラグが設定されます。このレジスタは、ライン プリミティブとポイント プリミティブについては定義されません。面レジスタは、次の命令で条件としてのみ使用することができます。それらは、setp_comp - ps、if_comp - ps、および break_comp - ps です。
ループ カウンター レジスタ
ループ カウンター レジスタ (aL) はこのモデルの新しいレジスタです。その値は、loop - ps/endloop - ps ブロックが実行されるたびに自動的にインクリメントされます。必要に応じて、ブロック内で相対アドレッシングに使用することができます。ループの外で ループ カウンター レジスタ を使用することは無効です。
位置座標レジスタ
位置座標レジスタ (vPos) はこのモデルの新しいレジスタです。これには対応するチャンネルのカレント ピクセル (x, y) が格納されます。(z, w) チャンネルは定義されていません。このレジスタは宣言を必要とするため、宣言されていない使用法にはエラーのフラグが設定されます。宣言された場合、このレジスタは .x、.y、.xy のいずれかのマスクを 1 つだけ持っていなければなりません。
入力レジスタの種類
レジスタ | 名前 | カウント | 読み取り/書き込み | 読み取りポートの数 | 1 命令あたりの読み取り数 | ディメンジョン | 相対アドレス | デフォルト | DCL の要/不要 |
---|---|---|---|---|---|---|---|---|---|
v# | 入力レジスタ | 10 | R | 1 | 制限なし | 4 | aL | なし | あり |
r# | テンポラリ レジスタ | 32 | 読み取り/書き込み | 3 | 制限なし | 4 | 不要 | なし | 不要 |
c# | 浮動小数点型定数レジスタ | 224 | R | 1 | 制限なし | 4 | 不要 | 0000 | 不要 |
i# | 整数型定数レジスタ | 16 | R | 1 | 1 | 4 | 不要 | 0000 | 不要 |
b# | ブール型定数レジスタ | 16 | R | 1 | 1 | 1 | 不要 | 不適用 | 不要 |
p0 | プレディケーション レジスタ | 1 | R | 1 | 1 | 1 | 不要 | なし | 不要 |
s# | サンプラー (Direct3D 9 asm-ps) | 16 | R | 1 | 1 | 4 | 不要 | 注意 1 を参照してください。 | あり |
vFace | Face_Register | 1 | R | 1 | 制限なし | 1 | 不要 | なし | あり |
vPos | Position_Register | 1 | R | 1 | 制限なし | 4 | 不要 | なし | あり |
aL | Loop_Counter_Register | 1 | R | 1 | 制限なし | 1 | なし | なし | 不要 |
注意 :
- サンプラ ルックアップのデフォルトは存在しますが、その値はテクスチャーのフォーマットに依存します。
読み取りポートの数は、1 つの命令で読み取ることのできるレジスタ (それぞれ種類が異なるレジスタ) の数です。
出力レジスタの種類
レジスタ | 名前 | カウント | 読み取り/書き込み | ディメンジョン | 相対アドレス | デフォルト | DCL の要/不要 |
---|---|---|---|---|---|---|---|
oC# | 出力カラー レジスタ | 「複数の要素テクスチャー (Direct3D 9)」を参照 | W | 4 | 不要 | なし | 不要 |
oDepth | 出力深度レジスタ | 1 | W | 1 | 不要 | なし | 不要 |