一時レジスタ (HLSL VS リファレンス)

頂点シェーダーの一時レジスタは、中間結果を保持するために使用されます。

一時レジスタを使用する前に初期化する必要があります。 各一時レジスタには、単一書き込みおよびトリプル読み取りアクセスがあります。 つまり、1 つのシェーダー命令で入力と同じ数の 3 つの一時レジスタを使用できます。

頂点シェーダーの前の呼び出しから残っている一時レジスタ内の値は使用できません。

レジスタは、各レジスタの動作を決定するプロパティで構成されます。

プロパティ 説明
Name r[n]。 n は省略可能なレジスタ番号です。 既定値は 0 で、値が指定されていない場合に使用される値です。
Count 最大 12 個のレジスタ。
I/O アクセス許可 読み取りと書き込みが可能です。 このレジスタは、API またはシェーダーによって読み取りまたは書き込みが可能です。
ポートの読み取り 1 つの命令内でレジスタを読み取ることができる回数は 3 です。 一時レジスタは、1 つの命令で複数回読み書きできる唯一のレジスタです。

 

各一時レジスタには、単一書き込みおよびトリプル読み取りアクセスがあります。 したがって、命令には、入力ソース オペランドのセットに 3 つの一時レジスタを含めることができます。

頂点シェーダーの前の呼び出しから残っている一時レジスタ内の値は使用できません。 書き込み前に一時レジスタから値を読み取る頂点シェーダーは、Direct3D API 呼び出しで頂点シェーダーを作成できません。

一時レジスタの使用例を次に示します。

def c4, 0,0,0,1
...
// Decompress position
mov r0.x, v0.x
mov r0.y, c4.w       // 1
mov r0.z, v0.y
mov r0.w, c4.w       // 1

// Compute theta from distance and time
mov r4.xz, r0        // xz
頂点シェーダーのバージョン 1_1 2_0 2_sw 2_x 3_0 3_sw
一時登録 x x x x x x

 

頂点シェーダー レジスタ