dcl_semantics (sm3 - ps asm)
宣告頂點著色器輸出與圖元著色器輸入之間的關聯。
語法
dcl_semantics [_centroid] dst[.write_mask]
其中:
- _semantics:識別預期的資料使用方式,而且可以是D3DDECLUSAGE 中的任何值 (不含D3DDECLUSAGE_前置詞)。 此外,可以將整數索引附加至語意,以區分使用類似語意的參數。
- [_心形] 是選擇性的指令修飾詞。 dcl_usage指令支援宣告輸入暫存器和紋理查閱指令。 心心附加,沒有空格。
- dst:目的地暫存器。 請參閱 ps_3_0暫存器 。
- write_mask:每次都有唯一的寫入遮罩時,可以宣告相同的輸出暫存器(因此可以將不同的語意套用至個別元件)。 不過,宣告中不能多次使用相同的語意。 這表示向量必須是四個元件或更少,而且不能跨越四個元件暫存器界限(個別輸出暫存器)。 使用_psize語意時,它應該具有完整的寫入遮罩,因為它被視為純量。 使用_position語意時,它應該具有完整的寫入遮罩,因為必須寫入這四個元件。
備註
圖元著色器版本 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dcl_usage | x | x |
所有dcl_usage指令都必須出現在第一個可執行指令之前。
宣告範例
ps_3_0
; Declaring inputs
dcl_normal v0.xyz
dcl_blendweight v0.w ; Must be same reg# as normal, matching vshader packing
dcl_texcoord1 v1.y ; Mask can be any subset of mask from vshader semantic
dcl_texcoord0 v1.zw; Has to be same reg# as texcoord1, to match vshader
; Declaring samplers
dcl_2d s0
dcl_2d s1
def c0, 0, 0, 0, 0
mov r0.x, v1.y ; texcoord1
mov r0.y, c0
texld r0, r0, s0
texld r1, v1.zw, s1
...
(output regs in ps_3_0 are same as ps_2_0: oC0-oC3, oDepth)
相關主題