暫存暫存器 (HLSL VS 參考)

頂點著色器暫存暫存器用來保存中繼結果。

在使用暫存暫存器之前,必須先初始化暫存暫存器。 每個暫存暫存器都有單一寫入和三重讀取權限。 這表示單一著色器指令可以使用三個暫存暫存器做為輸入。

暫存暫存器中的值,無法使用從頂點著色器的先前調用中保留的值。

暫存器是由屬性所組成,可決定每個暫存器的行為。

屬性 Description
名稱 r[n]。 n 是選擇性的暫存器號碼。 預設值為 0,如果未指定任何值,則為所使用的值。
Count 最多 12 個暫存器。
I/O 許可權 讀取/寫入 此暫存器可由 API 或著色器讀取或寫入。
讀取埠 在單一指令內可讀取暫存器次數為 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

 

頂點著色器暫存器