レジスタ - ps_2_x
レジスタ - ps_2_x
ピクセル シェーダは、頂点データを取得し、ピクセル データをラスタライザに出力し、計算中に一時的な結果を格納し、テクスチャ サンプリング ステージを識別するために、レジスタを使う。レジスタにはいくつかの種類があり、種類ごとに固有の機能がある。ここでは、ピクセル シェーダ バージョン 2_x が実装する入力レジスタと出力レジスタについてのリファレンス情報を記述する。
このバージョンから導入された追加レジスタが 1 つある。そのレジスタはプレディケーション用に使われる。
入力レジスタ タイプ
名前 | レジスタ タイプ | カウント | 読み取り / 書き込み | 読み取りポート数 | 1 命令あたりの読み取り数 | ディメンジョン | 相対アドレス | デフォルト | DCL の要 / 不要 |
---|---|---|---|---|---|---|---|---|---|
v# | カラー レジスタ | 2 | R | 1 | 制限なし | 4 | N | Partial(0001) | N |
r# | テンポラリ レジスタ | 32 | 読み取り / 書き込み | 3 | 制限なし | 4 | N | なし | N |
c# | 浮動小数点型定数レジスタ | 224 | R | 1 | 制限なし | 4 | N | 0000 | N |
i# | 整数型定数レジスタ | 16 | R | 1 | 1 | 4 | N | 0000 | N |
b# | ブール型定数レジスタ | 16 | R | 1 | 1 | 1 | N | FALSE | N |
aL | ループ カウンタ レジスタ | 1 | U | 不適用 | 制限なし | 1 | 不適用 | なし | N |
p | プレディケーション レジスタ | 1 | R | 1 | 1 | 1 | N | なし | 要 |
s# | サンプリング ステージ レジスタ | 16 | R | 1 | 1 | 4 | N | 状況依存* | 要 |
t# | 入力テクスチャ座標レジスタ | 8 | R | 1 | 1 | 1 | N | なし | 要 |
ここで
r は読み取り、w は書き込み、u は使用をそれぞれ表す。
partial(x, y, z, w) - チャンネルのサブセットだけがレジスタ内で更新された場合、残りのチャンネルはデフォルトで指定された値 (x, y, z, w) に設定される。
読み取りポート数は、1 つの命令の中で読み取れる異なるレジスタ (レジスタ タイプごと) の数である。たとえば、定数レジスタの読み取りポート数が 2 の場合、次に示す命令は、使う一意の定数レジスタの数が 2 つ以下なので有効である。
mad r0, c0, c0, c1 mad r0, c2, t1, c1 mad r0, c3, c3, c3
しかし、次に示す命令は、一意の定数レジスタを 2 つよりも多く使っているので無効である。
mad r0, c1, c2, c3
サンプラ参照のデフォルトはあるが、値はテクスチャ フォーマットによって異なる。通常は 1111 だが、a8 フォーマットは例外で 0001 である。
出力レジスタ タイプ
名前 | レジスタ タイプ | カウント | 読み取り / 書き込み | 読み取りポート数 | 1 命令あたりの読み取り数 | ディメンジョン | 相対アドレス | デフォルト | DCL の要 / 不要 |
---|---|---|---|---|---|---|---|---|---|
oC# | 出力カラー レジスタ | 「マルチエレメント テクスチャ」を参照 | W | 0 | 0 | 4 | N | なし | N |
oDepth | 出力深度レジスタ | 1 | W | 0 | 0 | 1 | N | なし | N |
ここで
- R は読み取り、W は書き込み、U は使用中である。
- partial(x, y, z, w) - チャンネルのサブセットだけがレジスタ内で更新された場合、残りのチャンネルはデフォルトで指定された値 (x, y, z, w) に設定される。
- aL のみ - これらのレジスタ バンクは、aL レジスタだけを使ってアドレス指定できる。範囲外の場合、ハードウェアおよび結果は予期できないものとなるが、例外として、浮動小数点型定数バンクは (0,0,0,0) を返す。