次の方法で共有


レジスタ - vs_2_0

レジスタ - vs_2_0

ここでは、頂点シェーダ バージョン 2_0 で実装される入力レジスタと出力レジスタに関する情報を記載する。ベクトルの要素は、x、y、z、w として指定するか、r、g、b、a として指定する。

入力レジスタ

名前 レジスタ タイプ データ タイプ ディメンジョン I/O 許可 読み取りポート 読み取り/命令 相対アドレス デフォルト DCL の要 / 不要
v# 入力レジスタ 16 浮動小数点 4D ベクトル 読み取り 1 3 なし Partial(0001)
r# テンポラリ レジスタ 12 浮動小数点 4D ベクトル 書き込み/読み取り 3 3 なし なし 不要
c# 浮動小数点型定数レジスタ 256 (1) 浮動小数点 4D ベクトル 定義/読み取り 1 2 a0 / aL (0, 0, 0, 0) 不要
i# 整数型定数レジスタ 16 整数 4D ベクトル 定義/使用 1 1 なし (0, 0, 0, 0) 不要
b# ブール型定数レジスタ 16 ブール値 スカラー 定義/使用 1 1 なし FALSE 不要
a0 アドレス レジスタ 1 整数 4D ベクトル 書き込み/使用 1 2 なし なし 不要
aL ループ カウンタ レジスタ 1 整数 スカラー 使用 1 2 なし なし 不要

ここで

  • 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
    

(1) 256 は、vs_2_0 で必要な最小 c# レジスタ カウントである。D3DCAPS9.MaxVertexShaderConst 能力には、デバイスでサポートされる実際の c# レジスタ カウントが含まれる。

出力レジスタ

名前 レジスタ タイプ データ タイプ ディメンジョン I/O 許可 相対アドレス デフォルト DCL の要 / 不要
oD# ディフューズ レジスタとスペキュラ レジスタ (2) 2 浮動小数点 4D ベクトル 書き込み なし なし 不要
oFog フォグ レジスタ 1 浮動小数点 スカラー 書き込み なし なし 不要
oPos (3) 位置座標レジスタ 1 浮動小数点 4D ベクトル 書き込み なし なし 不要
oPts ポイント サイズ レジスタ 1 浮動小数点 スカラー 書き込み なし なし 不要
oT# テクスチャ座標レジスタ 8 浮動小数点 4D ベクトル 書き込み なし なし 不要

(2) oD0 はディフューズ色、oD1 はスペキュラ色を表す。

(3) oPos の 4 つすべてのコンポーネントを書き込む必要がある。