暫存暫存器 (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 |
相關主題